大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
这道题目考察的知识点主要包括数组的遍历、累加和比较等基本操作,同时也需要理解题意中小猪每天都会从果树0开始采摘水果的情况。
题目解答方法的文字分析
我们的目标是找出在哪棵果树上,小猪能采摘到最多的水果。为了解决这个问题,我们可以采用如下思路:
- 初始化 currentFruits 和 maxFruits,分别用于记录当前水果数量和历史最大水果数量。初始时,currentFruits 应该为10,因为题目中给出果树0的果子数为10。
- 使用循环遍历数组 fruit,每次迭代都将当前果树的净水果数量差累加到 currentFruits 上。
- 在每次迭代后,判断 currentFruits 是否大于 maxFruits,如果是,则更新 maxFruits。
- 最终返回 maxFruits 即为小猪能够采摘到的最多水果数量。
思考过程中,让我们以示例来理解:
示例1输入:[-3, 2, 4, -1, -5]初始 currentFruits = 10, maxFruits = 10
- 遍历到
-3,currentFruits变为7,maxFruits不变。 - 遍历到
2,currentFruits变为9,maxFruits不变。 - 遍历到
4,currentFruits变为13,maxFruits更新为13。 - 遍历到
-1,currentFruits变为12,maxFruits不变。 - 遍历到
-5,currentFruits变为7,maxFruits不变。
返回 maxFruits,得到结果 13,即小猪能够采摘到的最多水果数量。
本题解析所用的编程语言 (C++)
本题解析使用 C++ 进行编程。
完整且正确的编程代码
class Solution {
public:
int mostFruitTree(vector<int>& fruit) {
int currentFruits = 10; // 初始值为10
int maxFruits = currentFruits; // 初始的最大水果数量就是初始值
for (int i = 0; i < fruit.size(); ++i) {
currentFruits += fruit[i]; // 将当前果树的净水果数量差累加到当前水果数量上
if (currentFruits > maxFruits) {
maxFruits = currentFruits; // 更新最多水果数量
}
}
return maxFruits;
}
};

京公网安备 11010502036488号