题目
给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。
我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。
题解
class Solution {
public:
int pivotIndex(vector<int>& nums)
{
int Sizeofnums = nums.size(); //可以通过调用 size() 和 capacity() 函数来得到vector的大小和容量
int sum = 0; //记录数组的总和
int add = 0; //记录从第一个数开始往后加的和
for (int i=0; i<Sizeofnums; i++)
{
sum +=nums[i];
} //求数组的总和
for (int i=0; i<Sizeofnums; i++)
{
if (sum -nums[i]== (2*add))
{
return i; //如果nums[i]+左边总和*2等于数组的总和,则此数组中心索引为i,返回i值。
}
add += nums[i]; //记录从第一个数开始往后加的和
}
return -1; //如果循环结束执行到了此步,证明循环中没有跳出即没找到中心索引,返回-1
}
};
示例: