题解 | #不能连续吃草的牛# java

不能连续吃草的牛

https://www.nowcoder.com/practice/64d9400c321042acb754a9455852a8d7

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int eatGrass (int[] nums) {
        // write code here
 int n = nums.length;
        if (n == 1) return nums[0];
        if (n == 2) return Math.max(nums[0], nums[1]);

        int[] f = new int[n];
        f[0] = nums[0];
        f[1] = Math.max(nums[0], nums[1]);

        for (int i = 2; i < n; ++i) {
            f[i] = Math.max(f[i - 1], f[i - 2] + nums[i]);
        }

        return f[n - 1];
    }
}

代码使用的编程语言是Java。

该题考察的知识点是动态规划(Dynamic Programming)。

代码的解释如下:

  1. eatGrass 方法用于计算在给定的一维整型数组 nums 中吃草的最大数量。
  2. 首先,获取给定数组的长度 n
  3. 如果数组长度为 1,直接返回数组中的唯一元素。
  4. 如果数组长度为 2,返回数组中较大的元素。
  5. 创建一个长度为 n 的整型数组 f,用于存储动态规划的结果。初始化 f[0] 为数组中第一个元素,f[1] 为数组中前两个元素的最大值。
  6. 从下标 2 开始循环遍历数组,对于每个下标 i,计算出当吃到第 i 根草时的最大数量。这个最大数量是在上一次和上上次吃草结果中选择较大的那个值加上当前草的数量。
  7. 最后,返回数组中最后一个元素 f[n-1],即吃草的最大数量。
全部评论

相关推荐

07-11 22:27
中南大学 Java
程序员牛肉:学历的话没问题。但是没问题的也就只有学历了。 其实你的整体架构是正确的,博客接着干。但是项目有点过于简单了。从后端的角度上讲,你这也就是刚入门的水平,所以肯定约面试够呛。 如果你要应聘后端岗位,那你第一个项目竟然是仿写操作系统。这个你要面试官咋问你。你一定要记住一点,你简历上写的所有的东西,都是为了证明你有能力胜任当前的岗位,而不是为了证明你自己会什么。 如果你只是浅浅的做几个项目,描述也都是烂大街。技术点也都是各种混水类的配置类需求,那你就不要幻想自己能走多远。一定要保持思考,保持学习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务