大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
这道题目考察的是在数组中找到一个索引,使得索引左边的元素和等于索引右边的元素和。
题目解答方法的文字分析
给定一个长度为 n 的整数数组 grass,表示每个草堆的重量。
我们的任务是找到一个草堆位置,使得该位置的左边草堆的总重量等于右边草堆的总重量。
具体步骤如下:
- 初始化变量
totalSum为数组所有元素的总和。 - 初始化变量
leftSum为 0,表示左边草堆的总重量。 - 遍历数组
grass,对于每个草堆重量grass[i],比较左边草堆总重量leftSum和右边草堆总重量totalSum - leftSum - grass[i]是否相等。如果相等,返回当前草堆位置i。 - 更新左边草堆总重量
leftSum为leftSum + grass[i]。 - 如果没有找到符合条件的草堆位置,返回 -1。
本题解析所用的编程语言 (C++)
本题解析所用的编程语言是 C++。
完整且正确的编程代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int pivotIndex(vector<int>& nums) {
int totalSum = 0; // 数组所有元素的总和
for (int num : nums) {
totalSum += num;
}
int leftSum = 0; // 左边草堆的总重量
for (int i = 0; i < nums.size(); i++) {
if (leftSum == totalSum - leftSum - nums[i]) {
return i; // 找到符合条件的草堆位置
}
leftSum += nums[i]; // 更新左边草堆总重量
}
return -1; // 没有找到符合条件的草堆位置
}
};

京公网安备 11010502036488号