LeetCode 1991. Find the Middle Index in Array
考点 | 难度 |
---|---|
Prefix Sum | Easy |
题目
Given a 0-indexed integer array nums
, find the leftmost middleIndex
(i.e., the smallest amongst all the possible ones).
A middleIndex is an index where nums[0] + nums[1] + ... + nums[middleIndex-1] == nums[middleIndex+1] + nums[middleIndex+2] + ... + nums[nums.length-1]
.
If middleIndex == 0
, the left side sum is considered to be 0. Similarly, if middleIndex == nums.length - 1
, the right side sum is considered to be 0.
Return the leftmost middleIndex
that satisfies the condition, or -1 if there is no such index.
思路
因为leftsum = rightsum - nums[i]
所以leftsum = (totalsum - leftsum) - nums[i]
,化简之后得到leftsum * 2 = totalsum - nums[i]
答案
public int findMiddleIndex(int[] nums) {
int totalSum = 0, leftSum = 0;
for (int i=0; i<nums.length; i++) totalSum += nums[i];
for (int i=0; i<nums.length; leftSum+=nums[i++])
if (leftSum*2 == totalSum-nums[i]) return i;
return -1;
}