- 找到數組的中間位置
給你一個下標從 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 。
示例 1:
輸入:nums = [2,3,-1,8,4]
輸出:3
解釋:
下標 3 之前的數字和為:2 + 3 + -1 = 4
下標 3 之后的數字和為:4 = 4
示例 2:
輸入:nums = [1,-1,4]
輸出:2
解釋:
下標 2 之前的數字和為:1 + -1 = 0
下標 2 之后的數字和為:0
示例 3:
輸入:nums = [2,5]
輸出:-1
解釋:
不存在符合要求的 middleIndex 。
示例 4:
輸入:nums = [1]
輸出:0
解釋:
下標 0 之前的數字和為:0
下標 0 之后的數字和為:0
注意:本題與主站 724 題相同:https://leetcode-cn.com/problems/find-pivot-index/
class Solution {
public:int findMiddleIndex(vector<int>& nums) {int total=0;int n=nums.size();for(int i=0;i<n;i++){//total求出前綴和total+=nums[i];}int sum=0;for(int i=0;i<n;i++){//關鍵在于這一行,左邊的和為sum,當sum == 右邊total-nums【i】-sum相等時的i為所求下標if(sum == total-nums[i]-sum){return i;}sum+=nums[i];}return -1;}
};