原题链接:https://leetcode-cn.com/problems/find-pivot-index/
从左到右一个个找吧,只不过并不需要每次寻找一个中心索引,都要计算左边和右边的和
我们可以先将数组的总和 sum 求出来,如示例1所示,总和 sum=28
接着来看
当中心索引 i=0 时 左边的和 leftSum=0 右边的和 rightSum=sum-leftSum-nums[i]=27
左右两边不相等,则中心所以后移
当中心索引 i=1 时,leftSum=leftSum+nums[i-1]=1,rightSum=sum-leftSum-nums[i]=20
左右两边不相等,则中心所以后移
当中心索引 i=2 时,leftSum=leftSum+nums[i-1]=8 ,rightSum=sum-leftSum-nums[i]=17
左右两边不相等,则中心所以后移
当中心索引 i=3 时,leftSum=leftSum+nums[i-1]=11 ,rightSum=sum-leftSum-nums[i]=11
左右两边相等,则 i=3 为当前的中心索引
代码:
class Solution {
public int pivotIndex(int[] nums) {
int sum=0;
for(int num:nums){
sum+=num;
}
int leftSum=0;
int rightSum=0;
for(int i=0;i<nums.length;i++){
if(i==0){
leftSum=0;
}else{
leftSum+=nums[i-1];
}
rightSum=sum-nums[i]-leftSum;
if(rightSum==leftSum){
return i;
}
}
return -1;
}
}