思路
方法:前缀和
记数组的全部元素之和为sum,当遍历到第 i 个元素时,设其左侧元素之和为 tmpSum,则其右侧元素之和为 sum-nums[i]-tmpSum。左右侧元素相等即为 tmpSum = sum-nums[i]-tmpSum。
1 class Solution { 2 public: 3 int pivotIndex(vector<int>& nums) { 4 int sum = 0; 5 for(int i = 0; i < nums.size(); ++i) { 6 sum += nums[i]; 7 } 8 9 int res = -1; 10 int tmpSum = 0; 11 for(int i = 0; i < nums.size(); ++i) { 12 if(tmpSum == sum-nums[i]-tmpSum) { 13 res = i; 14 break; 15 } else { 16 tmpSum += nums[i]; 17 } 18 } 19 20 return res; 21 } 22 };
复杂度分析
时间复杂度:O(n),n为数组长度
空间复杂度:O(1)