0
点赞
收藏
分享

微信扫一扫

1991. 找到数组的中间位置

题目

解题思路

前缀和

  • 如果 middleIndex == 0 ,左边部分的和定义为 0
  • 如果0 < middleIndex < nums.length - 1, 当nums[i - 1] == (nums[len - 1] - nums[i])时, 返回 i
  • 如果 middleIndex == nums.length - 1 ,右边部分的和定义为 0

代码

class Solution {
  public int findMiddleIndex(int[] nums) {
    int ans = -1, len = nums.length;
    for (int i = 1; i < len; i++) nums[i] += nums[i - 1];
    // 如果 middleIndex == 0 ,左边部分的和定义为 0
    if (nums[len - 1] - nums[0] == 0) return 0;
    for (int i = 1; i < len - 1; i++) if (nums[i - 1] == (nums[len - 1] - nums[i])) return i;
    // 如果 middleIndex == nums.length - 1 ,右边部分的和定义为 0
    if (nums[len - 2] == 0) return len - 1;
    return ans;
  }
}

题目来源:力扣(LeetCode)

举报

相关推荐

0 条评论