题解 | #牛牛的跳跃挑战# 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。
代码解释大纲:
- 创建minEnergyJump方法用于计算最小能量消耗:定义一个长整型数组dp,用于存储到达每个位置所需的最小能量消耗。初始位置的能量消耗为0。使用动态规划的思想,从第3个位置开始,逐个计算到达每个位置的最小能量消耗:当前位置的最小能量消耗等于前一位置、前两位置和前三位置的最小能量消耗加上对应位置的高度的较小值。遍历完成后,dp[n]存储的就是到达终点位置的最小能量消耗。
- 输出dp数组的内容,用于验证结果。
- 返回dp[n]作为最终的最小能量消耗。

