1991. Find the Middle Index in Array

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;
    }
}