题解
1.水题,按照题目要求即可,但是边界条件需要考虑的很多。
2.考虑数组为空的情况直接返回0即可。
3.考虑第一个为中心的情况,即除第一个数相加=0。
好的其实这些都可以归并,最后有精简了一下,可以往下翻,在最后。~
4.有更好的方法也欢迎指正~
5.学习~
c++ accumulate 用法
int sum = accumulate(vec.begin() , vec.end() , 42);
前两个参数为范围,最后一个数为初始值为多少。
string 用法如下
string sum = accumulate(v.begin() , v.end() , string(" "));
代码
class Solution {
public:
int pivotIndex(vector<int>& nums) {
int n = nums.size();
int sum = 0;
for(int i = 0; i < n; i++){
sum += nums[i];
}
if(n == 0){
return -1;
}
if((sum - nums[0]) == 0 &&(n!=0)){
return 0;
}
int sum1 = 0;
for(int i = 0; i < n; i++){
sum1 += nums[i];
if(((2*sum1 + nums[i+1])== sum)&& (i+1) < n){
return i+1;
}
}
return -1;
}
};
class Solution {
public:
int pivotIndex(vector<int>& nums) {
int n = nums.size();
int sum = 0;
for(int i = 0; i < n; i++){
sum += nums[i];
}
int sum1 = 0;
for(int i = 0; i < n; i++){
if((2*sum1 + nums[i])== sum){
return i;
}
sum1 += nums[i];
}
return -1;
}
};