2021/10/9 力扣数组和字符串第一题
刚开始是想在 数组开头 和 结尾 分别设 两个指针 left
right,leftSum rightSum记录两边和,哪边小哪边就加
一个元素,直到两边和相等或没找到,但是各种出错。
抄袭大神的代码:
int pivotindex( vector<int>& nums ) {
int tempSum = 0;
for( int i = 0; i < nums.size() ; i++ ) {
tempSum += nums[i]; //求出所有元素和
}
//错误代码 目的是求中值在最左边或最右边的情况 给个例子就知道为什么错了 2 -1 -1 0 0,正确答案3 这里是4
/*if( tempSum - nums[0] == 0 ) {
return 0;
} else if( tempSum - nums[nums.size() - 1] == 0 ) {
return nums.size() - 1;
}*/
int leftSum = 0; //记录左边元素和
for( int i = 0; i < nums.size(); i++ ) {
tempSum -= nums[i]; //tempSum减去左边元素,减去的左边元素是leftSum元素一部分
if( leftSum == tempSum ) {
return i;
}
leftSum += nums[i]; //leftSum位置不要放错,每次与tempSum要隔开一个元素比较
}
return -1;
}```