1999. Find the Middle Index in Array #
题目 #
- 给定下标从
0
开始的整数数组nums
,请你找到 最左边 的中间位置middleIndex
(即所有可能中间位置下标最小的一个)。 - 中间位置
middleIndex
是满足nums[0] + nums[1] + ... + nums[middleIndex-1] == nums[middleIndex+1] + nums[middleIndex+2] + ... + nums[nums.length-1]
的数组下标。 - 如果
middleIndex == 0
,左边部分的和定义为0
。类似的,如果middleIndex == nums.length - 1
,右边部分的和定义为0
。 - 返回满足上述条件 最左边 的
middleIndex
,若不存在这样的中间位置,返回-1
。
思路 #
前缀和 #
代码 #
前缀和 #
class Solution {
public int findMiddleIndex(int[] nums) {
int total = 0;
for(int num: nums) total += num;
int prefix = 0;
for (int i = 0; i < nums.length; i++) {
if (prefix == total - prefix - nums[i]) return i;
prefix += nums[i];
}
return -1;
}
}