题目描述
给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。
我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个
题目链接:https://leetcode-cn.com/problems/find-pivot-index
注意:
第二次循环的时候i是可以从0到nums.length()-1的,这两种情况下只要满足leftSum=0即可,不需要再单独拿出来分别讨论
时间复杂度O(n) 空间复杂度O(1)
class Solution {
public:
int pivotIndex(vector<int>& nums) {
int sum = 0,leftSum=0;
for(int i=0;i<nums.size();i++) sum+= nums[i];
for(int i=0;i<nums.size();i++){
//由于判断在前,所以当前的leftSum是前i-1个元素的和
//一定要记得是先判断,不符合才会把当前的值加起来
if(leftSum*2== sum-nums[i]) return i;
leftSum+= nums[i];
}
return -1;
}
};