You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求解数组最小跳跃次数问题时,我的思维逻辑存在哪些错误?

求解到达数组末尾的最小跳跃次数

问题背景

给定一个数组,计算从数组起始位置到达末尾所需的最小跳跃次数。

解题思路

  • 从数组起始位置开始遍历,循环持续的条件是当前位置i的覆盖范围i + arr[i]尚未触及数组末尾
  • 在每次循环内,遍历当前元素能覆盖的所有后续位置,找出其中值最大的元素对应的索引
  • 将当前位置i更新为这个最大值的索引,同时跳跃次数加1
  • 若遇到当前元素值为0且无法到达末尾的情况,直接返回-1

代码实现

public static int minJumps(int[] arr){
    // your code here
    if(arr.length==1){
        return -1;
    }
    int jumps=1;
    int maxIndex=0;

    int i=0;

    while(i+arr[i]<arr.length-1){
        if(arr[i]==0){
            return -1;
        }
        int max=0;
        for(int j=i+1;j<=arr[i]+i;j++){

            if(arr[j]>=max){
                max=arr[j];
                maxIndex=j;
            }

        }

        i=maxIndex;

        jumps++;

    }
    return jumps;
}

内容的提问来源于stack exchange,提问作者Gargouri Nourallah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:22:39