考察知识点:数组、前缀和
题目分析:
当某个位置i的左边所有草堆的和与右边所有草堆的和相等时,就是最终的结果。这样求一段区间数的和的问题一般使用前缀和算法,它能通过常数时间计算区间和。
前缀和就是将序列中某个位置的数与前面的所有数加起来,可以用表示。当我们要求序列1~3之间所有数的和时,可以通过
计算,用下标为3的数和之前所有数的和减去下标为0的数,就是下标1~3之间所有数的和。
所用编程语言:C++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int pivotIndex(vector<int>& nums) {
// write code here
int size = nums.size();
vector<int> sum(size);
sum[0] = nums[0];
for (int i = 1; i < size; i++) {
sum[i] = sum[i - 1] + nums[i];
}
for (int i = 1; i < size - 1; i++) {
if (sum[i - 1] == sum[size - 1] - sum[i])
return i;
}
return -1;
}
};

京公网安备 11010502036488号