数组中心
寻找数组的中心索引
给定一个整数数组 nums ,请编写一个能够返回数组中心下标的方法(中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和)
方案 前缀和
思路:记数组的全部元素之和为sum
,当遍历到第i
个元素时,设其左侧元素之和为total
,则其右侧元素之和为sum-nums[i]-total
。左右侧元素相等即为total右= sum - nums[i] - total左
。即 2*total + nums[i] = sum
。
:::details 点击查看代码
function pivotIndex(nums) {
let sum=nums.reduce((prev,curr)=>{
return prev+curr
},0)
let total=0;
for(let i=0;i<nums.length;i++){
if(2*total+nums[i]==sum){
return i
}else{
total+=nums[i];
}
}
return -1;
};
:::