思路:
直接想法可以求出前缀数组和后缀数组然后再遍历一遍,找到答案。
但这样的空间复杂度为O(n)。
可以先算出数组的总和,然后一边计算前缀的和,一边判断。因为当前位置的后缀的和等于总和减去前缀的和。
这样空间复杂度可以达到O(1)。
代码:
class Solution {
public int pivotIndex(int[] nums) {
int n = nums.length;
int total = 0;
for(int i = 0; i < n; i++) {
total += nums[i];
}
int pre = 0;
int ans = -1;
for(int i = 0; i < n; i++) {
if(pre == total - pre - nums[i]) {
ans = i;
break;
}
pre += nums[i];
}
return ans;
}
}