题解 | #不能连续吃草的牛II#
不能连续吃草的牛II
https://www.nowcoder.com/practice/0b6e9ca056eb4166b4bfd4f7c90b2c61
- 题目考察的知识点 : 动态规划
- 题目解答方法的文字分析:
- 和前面一道题类似
- 可以把环拆成两条链,分别计算它们的最大饱腹感值,然后取两者之间的最大值。
- 具体而言,我们可以从第一块草和第二块草开始计算一条链的最大饱腹感值,从第二块草和第三块草开始计算另一条链的最大饱腹感值,最后取两个值中的较大者作为答案。
- 本题解析所用的编程语言: 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题的解法思路