大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

这道题目考察的是在数组中找到一个索引,使得索引左边的元素和等于索引右边的元素和。

题目解答方法的文字分析

给定一个长度为 n 的整数数组 grass,表示每个草堆的重量。

我们的任务是找到一个草堆位置,使得该位置的左边草堆的总重量等于右边草堆的总重量。

具体步骤如下:

  1. 初始化变量 totalSum 为数组所有元素的总和。
  2. 初始化变量 leftSum 为 0,表示左边草堆的总重量。
  3. 遍历数组 grass,对于每个草堆重量 grass[i],比较左边草堆总重量 leftSum 和右边草堆总重量 totalSum - leftSum - grass[i] 是否相等。如果相等,返回当前草堆位置 i
  4. 更新左边草堆总重量 leftSumleftSum + grass[i]
  5. 如果没有找到符合条件的草堆位置,返回 -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; // 没有找到符合条件的草堆位置
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!