书籍跳跃游戏(4)0715

给定数组arr,arr[i] ==k代表可以从位置i向右跳1~k个距离。比如,arr[2] == 3,代表从位置2可以跳到位置3、位置4或位置5。如果从位置0出发,返回最少跳几次能跳到arr最后的位置上。

解答:

1 整型变量jump,代表目前跳了多少步。整型变量cur,代表如果只能跳jump步,最远能够达到的位置。整型变量next,代表如果在多跳一步,最远能够达到的位置。初始,jump=0,cur=0,next=0。

2 从左到右遍历arr,假设遍历到位置i

如果cur>=i,说明跳jump步可以到达位置i,此时什么也不做。

如果cur<i,说明只跳jump步不能到达位置i,需要多跳一步才行。此时令jump++,cur=next。表示多跳了一步,cur更新成跳jump+1步能够达到的位置,即next。

将next更新成math.max(next,i+arr[i]),表示下一次多跳一步到达的最远位置。

3 最终返回jump即可。

public int jump(int[] arr){
    if(arr == null || arr.length == 0){
        return 0;
    }
    int jump = 0;
    int cur = 0;
    int next = 0;
    for(int i = 0;i < arr.length;i++){
        if(cur < i){
            jump ++;
            cur = next;
        }
        next = Math.max(next,i+arr[i]);
    }
    return jump;
}

相关推荐

  1. 书籍跳跃游戏(4)0715

    2024-07-16 01:38:02       19 阅读
  2. 跳跃游戏 + 45. 跳跃游戏 II

    2024-07-16 01:38:02       70 阅读
  3. 45. 跳跃游戏 II

    2024-07-16 01:38:02       51 阅读
  4. 45.跳跃游戏

    2024-07-16 01:38:02       42 阅读
  5. 55.跳跃游戏

    2024-07-16 01:38:02       50 阅读
  6. 55. 跳跃游戏

    2024-07-16 01:38:02       52 阅读
  7. 45. 跳跃游戏 II

    2024-07-16 01:38:02       50 阅读
  8. LeetCode跳跃游戏 VI

    2024-07-16 01:38:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 01:38:02       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 01:38:02       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 01:38:02       62 阅读
  4. Python语言-面向对象

    2024-07-16 01:38:02       72 阅读

热门阅读

  1. livecd工具下载地址

    2024-07-16 01:38:02       18 阅读
  2. 网站架构核心要素

    2024-07-16 01:38:02       20 阅读
  3. postman实现接口关联

    2024-07-16 01:38:02       18 阅读
  4. IPython 使用技巧整合

    2024-07-16 01:38:02       19 阅读
  5. ArkTS学习笔记_封装复用之@builderParam装饰器

    2024-07-16 01:38:02       18 阅读
  6. sklearn基础教程:掌握机器学习入门的钥匙

    2024-07-16 01:38:02       20 阅读
  7. Kubernetes面试整理-Helm是什么?

    2024-07-16 01:38:02       19 阅读
  8. 去除重复数字

    2024-07-16 01:38:02       22 阅读