先计算数组总和,再遍历数组求前缀和,同时比较当前元素左右两侧的子数组和是否相等。
class Solution {
public:
int pivotIndex(vector<int>& nums) {
if (nums.empty()) return -1;
int totalSum = accumulate(nums.begin(), nums.end(), 0); //计算数组所有元素之和
int curSum = 0;
for (int i = 0; i < nums.size(); ++ i)
{
curSum += nums[i];
if (curSum - nums[i] == totalSum - curSum) return i; //比对左右两侧的子数组之和
}
return -1;
}
};