题目
代码(8.2 首刷部分看解析)
GO:
func pivotIndex(nums []int) int {
sum, leftSum := 0, 0
for _, v := range(nums) {
sum += v
}
for i, v := range(nums) {
if sum - leftSum - v == leftSum {
return i
}
leftSum += v
}
return -1;
}
C++:accumulate可以直接求和。
class Solution {
public:
int pivotIndex(vector<int>& nums)
{
int sum=accumulate(nums.begin(),nums.end(),0);
int ans=0;
for(int i=0;i<nums.size();i++)
{
if(ans*2+nums[i]==sum)
return i;
ans+=nums[i];
}
return -1;
}
};
代码(9.24 二刷自解)
class Solution {
public:
int pivotIndex(vector<int>& nums) {
int sum = 0;
for(int num : nums)
sum += num;
int cur = 0;
for(int i = 0; i < nums.size(); i++) {
if(sum-nums[i] == 2*cur)
return i;
cur += nums[i];
}
return -1;
}
};