题解 | #牛牛的跳跃挑战# 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 ans = 0;
        long[] dp = new long[1005];
        dp[0] = 0;
        dp[1] = 0;
        dp[2] = 0;
        int n = height.length;
        for (int i = 3; i <= n; i++) {
            dp[i] = Math.min(dp[i - 1] + height[i - 1], Math.min(dp[i - 2] + height[i - 2],
                             dp[i - 3] + height[i - 3]));
        }
        for (int i = 0; i <= n; i++) {
            System.out.print(dp[i] + "  ");
            if (i == n)
                System.out.println();
        }
        return (int)dp[n];
    }
}

该代码使用的编程语言是Java。

该题目要求计算跳跃过程中所需的最小能量消耗。给定一个整型数组height,表示每个位置的高度,初始位置的高度为0。每次可以选择跳跃1、2或3个位置,每个位置的高度都会消耗相应的能量,而能量的消耗必须满足以下条件:

  • 能量消耗必须大于或等于当前位置的高度。
  • 如果能量消耗大于当前位置的高度,则能量剩余量为能量消耗减去当前位置的高度;否则,能量剩余量为0。

代码解释大纲:

  1. 创建minEnergyJump方法用于计算最小能量消耗:定义一个长整型数组dp,用于存储到达每个位置所需的最小能量消耗。初始位置的能量消耗为0。使用动态规划的思想,从第3个位置开始,逐个计算到达每个位置的最小能量消耗:当前位置的最小能量消耗等于前一位置、前两位置和前三位置的最小能量消耗加上对应位置的高度的较小值。遍历完成后,dp[n]存储的就是到达终点位置的最小能量消耗。
  2. 输出dp数组的内容,用于验证结果。
  3. 返回dp[n]作为最终的最小能量消耗。
全部评论
一眼GPT
点赞 回复 分享
发布于 2023-08-03 12:38 浙江

相关推荐

牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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