给定一个整数数组nums
,编写一个返回此数组的“中心索引”的方法。
我们将中心索引定义为:中心索引左边的数字之和等于中心索引右边的数字之和。
如果不存在这样的中心索引,我们应该返回-1。 如果有多个中心索引,则应返回最左侧的那个。
样例
样例1:
输入:
nums = [1, 7, 3, 6, 5, 6]
输出: 3
解释:
索引3 (nums[3] = 6)左侧所有数之和等于右侧之和。
并且3是满足条件的第一个索引。
样例2:
输入:
nums = [1, 2, 3]
输出: -1
解释:
并没有满足条件的中心索引。
注意事项
nums
的长度范围为[0, 10000]
.nums[i]
中每个元素都是[-1000, 1000]
范围内的整数.
class Solution {
public:
/**
* @param nums: an array
* @return: the "pivot" index of this array
*/
int pivotIndex(vector<int> &nums) {
// Write your code here
if(nums.size() == 0)
return -1;
int left = 0;
int right = 0;
for(int i = 1; i < nums.size(); i++)
right += nums[i];
if(left == right)
return 0;
for(int i = 1;i < nums.size(); i++)
{
left += nums[i-1];
right -= nums[i];
if(left == right)
return i;
}
return -1;
}
};