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

不能连续吃草的牛II

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

  • 题目考察的知识点 : 动态规划
  • 题目解答方法的文字分析:
  1. 和前面一道题类似
  2. 可以把环拆成两条链,分别计算它们的最大饱腹感值,然后取两者之间的最大值。
  3. 具体而言,我们可以从第一块草和第二块草开始计算一条链的最大饱腹感值,从第二块草和第三块草开始计算另一条链的最大饱腹感值,最后取两个值中的较大者作为答案。
  • 本题解析所用的编程语言: Python
  • 完整且正确的编程代码

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @return int整型
#
class Solution:
    def eatGrass(self, nums: List[int]) -> int:
        n = len(nums)
        if n == 0:
            return 0
        if n == 1:
            return nums[0]
        # 计算链 1 的最大饱腹感值
        dp1 = [0] * (n + 1)
        dp1[0], dp1[1] = 0, nums[0]
        for i in range(2, n):
            dp1[i] = max(dp1[i - 1], dp1[i - 2] + nums[i - 1])
        max_sum1 = dp1[n - 1]
        # 计算链 2 的最大饱腹感值
        dp2 = [0] * (n + 1)
        dp2[0], dp2[1] = 0, nums[1]
        for i in range(2, n):
            dp2[i] = max(dp2[i - 1], dp2[i - 2] + nums[i])
        max_sum2 = dp2[n - 1]
        # 返回两个结果中的较大值
        return max(max_sum1, max_sum2)
牛客高频top202题解系列 文章被收录于专栏

记录刷牛客高频202题的解法思路

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 18:02
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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