解题思路
先计算数组的和,由于返回最靠左的中心下标的位置,则从左至右遍历:
- 如果只有一个元素,则中心下标位置就是0
- 反之len(nums) > 0,
Java
class Solution {
public int pivotIndex(int[] nums) {
int sum = Arrays.stream(nums).sum();
int left_sum = 0;
int n = nums.length;
for (int i = 0; i < n; i++){
sum -= nums[i];
if (left_sum == sum){
return i;
}
else{
left_sum += nums[i];
}
}
return -1;
}
}
用前缀和也可以
class Solution {
public int pivotIndex(int[] nums) {
int total = Arrays.stream(nums).sum();
int sum = 0;
for (int i = 0; i < nums.length; ++i) {
if (2 * sum + nums[i] == total) {
return i;
}
sum += nums[i];
}
return -1;
}
}