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

不能连续吃草的牛II

https://www.nowcoder.com/practice/0b6e9ca056eb4166b4bfd4f7c90b2c61

题目考察的知识点是:

动态规划。

题目解答方法的文字分析:

环状排列意味着第一块草料和最后一块草料中只能选择一个吃,因此可以把此环状排列化为两个单排排列子问题。先计算第一块草料的数值,然后计算最后一块草料的数值,最后将两个数值相加即可。

本题解析所用的编程语言:

java语言。

完整且正确的编程代码:

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @return int整型
     */
    public int eatGrass (int[] nums) {
        // write code here
        if (nums.length == 1) {
            return nums[0];
        }
        if (nums.length == 2) {
            return Math.max(nums[0], nums[1]);
        }
        int[] eatFirst = new int[nums.length];
        int[] eatLast = new int[nums.length];
        eatFirst[0] = nums[0];
        eatFirst[1] = Math.max(nums[0], nums[1]);
        eatLast[0] = 0;
        eatLast[1] = nums[1];
        for (int i = 2; i < nums.length - 1; i++) {
            eatFirst[i] = Math.max(eatFirst[i - 1], eatFirst[i - 2] + nums[i]);
            eatLast[i] = Math.max(eatLast[i - 1], eatLast[i - 2] + nums[i]);
        }
        int n = nums.length - 1;
        eatFirst[n] = eatFirst[n - 1];
        eatLast[n] = Math.max(eatLast[n - 1], eatLast[n - 2] + nums[n]);
        return Math.max(eatFirst[n], eatLast[n]);
    }
}
#题解#
全部评论

相关推荐

Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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