LeetCode 55. 跳跃游戏-贪心算法-java

欢迎大家分享想法以及指教,让我们一起学习

先看题目

简单来说就是数组中每个元素都是你可以走的步数,让你一个挨着一个走看看能不能走出种点,

需要注意两点:

1.假如数组内只有一个元素,不管里面是多少步都返回true,因为已经就是终点了

2.如果你的步数只能走到当前了那么你就不可能到达终点了

还是使用贪心算法:你只需要遍历数组,只关心现在的步数够不够走到终点即可

具体代码:

class Solution {
    public boolean canJump(int[] nums) {
       if(nums==null||nums.length==0){
            return false;
        }
       //只有一个元素,就是终点了
       if(nums.length==1){
           return true;
       }
        int maxLength = 0;
        //不需要遍历最后一个元素因为是终点
        for (int i = 0; i < nums.length-1; i++) {
           //看看最大步数在哪
            maxLength=Math.max(maxLength,i+nums[i]);
            //如果这个最大步数可以直接到达终点,即可直接返回
            if(maxLength>=nums.length-1){
                return true;
            }
            //假如当前最大只能走到这里了那么就无法继续向前了
            if(maxLength==i){
                return false;
            }
        }
        return false;

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值