跳到主要内容

数组中心

寻找数组的中心索引

给定一个整数数组 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;
};

:::