栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

3.<tag-贪心算法的简单应用>lt.55. 跳跃游戏 + lt.45. 跳跃游戏 II dbc

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

3.<tag-贪心算法的简单应用>lt.55. 跳跃游戏 + lt.45. 跳跃游戏 II dbc

lt.55. 跳跃游戏 [案例需求]

[思路分析]


[代码实现]
class Solution {
    public boolean canJump(int[] nums) {
        if (nums.length == 1) {
            return true;
        }
        int cover = nums[0];
        for (int i = 0; i <= cover; i++) {
            cover = Math.max(cover, i + nums[i]);
            if (cover >= nums.length - 1) {
                return true;
            }
        }
        return false;
    }
}

另一种写法

class Solution {
    public boolean canJump(int[] nums) {
        //
        int len = nums.length;
        int longestDist = 0;
        //在覆盖范围内更新最远能够达到的距离(i <= longestDist)
        for(int i = 0; i <= longestDist; i++){   
            //最远到达的距离 = 当前位置 + 当前位置nums[i], 也就是覆盖距离
            longestDist = Math.max(longestDist, i + nums[i]);

            if(longestDist >= len - 1)return true;
        }
        return false;
    }
}
lt.45. 跳跃游戏 II [案例需求]

[思路分析] [代码实现]
class Solution {
    public int jump(int[] nums) {
        if(nums == null || nums.length <= 1){
            return 0;
        }
        //当前的跳跃次数
        int steps = 0;
        //当前跳跃次数情况下, 最远能够覆盖的距离
        int curStepsMaxReach = 0; 
        //当前跳跃次数+1情况下, 最远能够覆盖的距离
        int oneMoreStepMaxReach = nums[0];

        for(int i = 1; i < nums.length; i++){
            //如果目前的位置超过了curStepsMaxReach, 则意味着我必须要跳一步了, 即Step++;
            //同时由于step++了, curStepsMaxReach 就变成了 oneMoreStepMaxReach
            if(i > curStepsMaxReach){ // ?
                steps++;
                curStepsMaxReach = oneMoreStepMaxReach;
            }

            oneMoreStepMaxReach = Math.max(oneMoreStepMaxReach, i + nums[i]);
        }

        return steps;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960169.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号