题目描述
给你一个整数数组 nums,请编写一个能够返回数组 “中心索引” 的方法。
数组 中心索引 是数组的一个索引,其左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心索引,返回 -1 。如果数组有多个中心索引,应该返回最靠近左边的那一个。
注意:中心索引可能出现在数组的两端。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-pivot-index
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
C++
class Solution {
public:
int pivotIndex(vector<int>& nums) {
/*
思路:暴力,
初始化:中心索引为0,左侧之和为0,右边之和为从[1,len-1]的和
然后,从下标1开始遍历,如果left==right说明,当前下标-1就是中心索引;
如果不等,就前进1,需要left加上,right减去
*/
int left; //左侧数之和
int right=0; //右侧数之和
//初始化
left=0;
for(int j=1;j<nums.size();j++){
right+=nums[j];
}
int i;
for(i=1;i<=nums.size();i++){
if( left==right){
return i-1;
}
else{
left +=nums[i-1];
right-=nums[i];
}
}
return -1;
}
};