题解 | #牛群迁徙# java

牛群迁徙

https://www.nowcoder.com/practice/686d79ac54874f5f8abbb83184102873

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param rivers int整型一维数组
     * @return int整型
     */
    public int min_jumps (int[] rivers) {
        // write code here
        int n = rivers.length;
        int[] dp = new int[n]; // 用于记录每个位置的最小跳跃次数
        Arrays.fill(dp, Integer.MAX_VALUE); // 初始化为最大值
        dp[0] = 0; // 初始位置的最小跳跃次数为0

        for (int i = 1; i < n; i++) {
            for (int j = 0; j < i; j++) {
                if (j + rivers[j] >= i) {
                    dp[i] = Math.min(dp[i], dp[j] + 1);
                }
            }
        }

        return dp[n - 1];
    }
}

Java 编程语言。

该题考察了以下知识点:

  1. 动态规划
  2. 嵌套循环
  3. 数组填充和更新

代码的文字解释如下:

  • 创建一个长度为 n 的整数数组 dp,用于记录每个位置的最小跳跃次数。
  • 将 dp 数组的所有元素初始化为最大值,表示初始情况下无法达到。
  • 将初始位置的最小跳跃次数 dp[0] 设置为 0,因为不需要跳跃即可到达。
  • 使用两个嵌套循环,外层循环遍历从第二个位置到最后一个位置的每个位置。
  • 内层循环遍历从第一个位置到当前位置的每个位置,检查是否能够通过跳跃到达当前位置。
  • 如果能够到达当前位置,则更新 dp[i] 为之前位置的最小跳跃次数加上 1。
  • 返回 dp[n - 1],即牧人从初始位置到达 rivers[n - 1] 需要的最小跳跃次数。
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务