题解 | #牛群迁徙# 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[] jumps = new int[n]; // 存储到达每个位置所需的最小跳跃次数

        Arrays.fill(jumps,
                    Integer.MAX_VALUE); // 用一个较大的值初始化跳跃次数数组
        jumps[0] = 0; // 起始位置不需要跳跃

        for (int i = 0; i < n; i++) {
            for (int j = 1; j <= rivers[i] && i + j < n; j++) {
                // 更新可到达位置的最小跳跃次数
                jumps[i + j] = Math.min(jumps[i + j], jumps[i] + 1);
            }
        }

        return jumps[n -
                     1]; // 返回到达最后一条河流所需的最小跳跃次数
    }
}

Java代码。

考察的主要知识点包括:

  1. 动态规划
  2. 数组操作

以下是代码的文字解释:

  • min_jumps 函数接受一个整数数组 rivers 作为参数,表示每个河流边缘向前跳跃的最大长度。
  • 创建一个长度为 n 的整数数组 jumps,用于存储到达每个位置所需的最小跳跃次数。
  • 使用 Arrays.fill 初始化 jumps 数组,将其所有元素初始化为一个较大的值(Integer.MAX_VALUE),表示初始状态下无穷大的跳跃次数。
  • 将起始位置 jumps[0] 设置为 0,因为不需要跳跃来到起始位置。
  • 使用嵌套循环迭代处理每个位置 i,以及在 rivers[i] 范围内可跳跃的步数 j
  • 在内层循环中,根据当前位置 i 和可跳跃的步数 j,更新跳跃到达的位置 i + j 所需的最小跳跃次数,将其更新为 jumps[i] + 1 和当前位置 i + j 位置上的最小跳跃次数的较小值。
  • 返回 jumps[n - 1],表示到达最后一条河流所需的最小跳跃次数。
全部评论

相关推荐

炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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