题目:
我这里采用的是双指针的算法:
这道题的本质是让你找到一个“中间项”,让左边的数等于右边的数
左边的数很容易求,一直让一个变量累加数组从左到右的元素即可。
右边的数怎么表示?我们可以先求出数组的总和sum,让其不断减去 nums[i]即可。
上代码:
class Solution {
public int pivotIndex(int[] nums) {
int sum=0;
for(int i=0;i<nums.length;i++){
sum+=nums[i];
}
int count=0;
for(int i=0;i<nums.length;i++){
count+=nums[i];
if(count==sum) return i;
sum-=nums[i];
}
return -1;
}
}
画个图,更清楚些: