题解 | #小猪摘水果#

小猪摘水果

https://www.nowcoder.com/practice/fdb76b9170dc4e689a7eceee97159d96

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

题目考察的知识点

这道题目考察的知识点主要包括数组的遍历、累加和比较等基本操作,同时也需要理解题意中小猪每天都会从果树0开始采摘水果的情况。

题目解答方法的文字分析

我们的目标是找出在哪棵果树上,小猪能采摘到最多的水果。为了解决这个问题,我们可以采用如下思路:

  1. 初始化 currentFruits 和 maxFruits,分别用于记录当前水果数量和历史最大水果数量。初始时,currentFruits 应该为10,因为题目中给出果树0的果子数为10。
  2. 使用循环遍历数组 fruit,每次迭代都将当前果树的净水果数量差累加到 currentFruits 上。
  3. 在每次迭代后,判断 currentFruits 是否大于 maxFruits,如果是,则更新 maxFruits。
  4. 最终返回 maxFruits 即为小猪能够采摘到的最多水果数量。

思考过程中,让我们以示例来理解:

示例1输入:[-3, 2, 4, -1, -5]初始 currentFruits = 10, maxFruits = 10

  • 遍历到 -3currentFruits 变为 7maxFruits 不变。
  • 遍历到 2currentFruits 变为 9maxFruits 不变。
  • 遍历到 4currentFruits 变为 13maxFruits 更新为 13
  • 遍历到 -1currentFruits 变为 12maxFruits 不变。
  • 遍历到 -5currentFruits 变为 7maxFruits 不变。

返回 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;
    }
};

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

阿Q的题解 文章被收录于专栏

阿Q秋招刷过的题

全部评论

相关推荐

2024-12-29 11:08
湖南工业大学 Java
程序员牛肉:简历没什么大问题了。 而且不要再换项目了。三月份就开暑期实习了,现在都一月份了。实在来不及重新开一下项目了。把一个项目写完或许很快,但是把一个项目搞懂吃透并不简单。所以不要换项目了,把你简历上面的两个项目好好挖一挖吧。 具体 体现在:你能不能流利的说出你的项目的每一个功能点代码实现?你能不能说出在这块除了A技术之外,还有其他技术能够实现嘛?如果有其他技术能够实现,那你这块为什么选择了你当前用的这个技术?
投递牛客等公司
点赞 评论 收藏
分享
02-09 10:51
已编辑
门头沟学院 Java
Java抽象带篮子:考完研冲春招可以看看我的置顶帖子,里面写了怎么写简历,怎么包装实习经历,还有八股笔记资料和速成的高质量项目话术呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务