侧边栏壁纸
博主头像
阿里灰太狼博主等级

You have to believe in yourself . That's the secret of success.

  • 累计撰写 104 篇文章
  • 累计创建 50 个标签
  • 累计收到 12 条评论

目 录CONTENT

文章目录

leetcode-45. 跳跃游戏 II

阿里灰太狼
2022-05-06 / 0 评论 / 2 点赞 / 819 阅读 / 642 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

45. 跳跃游戏 II

JAVA解法

class Solution {
     public int jump(int[] nums) {
        // 对传进来的数组进行判空
        if (nums == null || nums.length == 0 || nums.length == 1) {
            return 0;
        }
        //记录跳跃的次数
        int count = 0;
        //当前的覆盖最大区域
        int curDistance = 0;
        //最大的覆盖区域
        int maxDistance = 0;
        for (int i = 0; i < nums.length; i++) {
            //在可覆盖区域内更新最大的覆盖区域
            maxDistance = Math.max(maxDistance,i + nums[i]);
            //说明当前一步,再跳一步就到达了末尾
            if (maxDistance >= nums.length - 1){
                count++;
                break;
            }
            //走到当前覆盖的最大区域时,更新下一步可达的最大区域
            if (i == curDistance){
                curDistance = maxDistance;
                count++;
            }
        }
        // 返回最终结果
        return count;
    }
}

题解分析

  首先对传进来的数组进行判空,若不为空则继续。分别定义记录跳跃的次数、记录当前的覆盖最大区域和最大的覆盖区域三个变量。对数组进行遍历,求出在可覆盖区域内更新最大的覆盖区域,若最大的覆盖区域大于等于数组最后一个的位置则证明再跳一步就到达了末尾,则只需要走到走到当前覆盖的最大区域,下一步就到末尾,因此到了这一步后步数加一即为所求。

leetcode原题:45. 跳跃游戏 II

2

评论区