考察知识点:数组、前缀和
题目分析:
当某个位置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; } };