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

牛牛的跳跃挑战

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

import java.util.*;


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

        // 初始化前三个障碍物的能量值为其高度
        dp[0] = height[0];
        dp[1] = height[1];
        dp[2] = height[2];

        for (int i = 3; i < n; i++) {
            // 计算从第i个障碍物开始跳跃的最低能量值,只需要累加上障碍物i的高度即可
            dp[i] = Math.min(dp[i - 1], Math.min(dp[i - 2], dp[i - 3])) + height[i];
        }

        // 返回从下标为n-1的障碍物开始跳跃的最低能量值
        return Math.min(dp[n - 1], Math.min(dp[n - 2], dp[n - 3]));
    }
}

编程语言是Java。

该题考察动态规划

文字解释:通过动态规划的方式,逐步累加每个障碍物的高度,以获得最低能量值。最终,返回从倒数三个障碍物开始跳跃的最低能量值作为结果。

使用循环从第三个障碍物开始遍历数组,在每个位置 i,计算从当前位置开始跳跃的最低能量值,该值是从前三个位置的最小能量值中选择一个,并加上当前障碍物的高度。从最后三个位置中选择一个能量值的最小值作为结果返回

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-15 17:32
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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