题解 | #牛牛的跳跃挑战#

牛牛的跳跃挑战

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

  • 题目考察的知识点 : 动态规划
  • 题目解答方法的文字分析:
  1. 可以定义一个一维数组 dp,其中 dp[i] 表示从第 i 个障碍物起跳到终点所需的最小能量值。对于每个位置 i,dp[i] 可以由 dp[i+1]、dp[i+2] 和 dp[i+3] 推导出来,分别表示跳过下一个、下两个或下三个障碍物。因为牛牛可以选择从前三个障碍物中的任意一个开始跳跃,所以我们还需要考虑前三个元素的值。
  2. 最终答案即为 dp[0],因为我们可以选择从第一个或第二个或第三个障碍物开始跳跃。注意到如果从第一个障碍物开始跳跃,则需要消耗其本身的高度作为能量值,即 dp[0] = height[0] + min(dp[1], dp[2], dp[3])。
  • 本题解析所用的编程语言: Python
  • 完整且正确的编程代码

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param height int整型一维数组
# @return int整型
#
class Solution:
    def minEnergyJump(self, height: List[int]) -> int:
        n = len(height)
        dp = [0] * (n + 3)  # 前三个元素用于处理边界情况
        for i in range(n - 1, -1, -1):
            dp[i] = height[i] + min(dp[i + 1], dp[i + 2], dp[i + 3])
        return min(dp[0], dp[1], dp[2])  # 取三个起点中的最小值
牛客高频top202题解系列 文章被收录于专栏

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

全部评论

相关推荐

04-09 09:47
门头沟学院 Java
Arbelite_:2-3k,这工资还不如去摇奶茶
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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