美文网首页
Jump Game(Leetcode55)

Jump Game(Leetcode55)

作者: zhouwaiqiang | 来源:发表于2018-11-28 16:40 被阅读0次

题目

  • 给定一个非负数组,从第0个下标开始跳,能跳过的最大步长为这个下标对应的数组值,求问能不能从起始节点跳到数组的末尾。
  • 举例,给定数组[2,3,1,4],起始位置是在0,数组值为2,此时最大步长为2,那么可以调到下标1或者2,然后再根据对应的值的步长跳,最后可以到达下标为3的地方,返回true

解题方法(官方给出的解题步骤)

  • 贪婪算法:这道题的最佳算法是采取贪心算法,给定一个lastPos是最大数组下标,然后从由到左走,假设它可以到达这个下标,那么此时就把下标赋值给右侧的值,然后迭代,直到循环结束,最后判断lastPos的值是否为0,即是起始值就可以得到答案

源代码实现

public class Solution {
    public boolean canJump(int[] nums) {
        int lastPos = nums.length - 1;
        for (int i = nums.length - 1; i >= 0; i--) {
            if (i + nums[i] >= lastPos) lastPos = i;
        }
        return lastPos == 0;
    }
}

解题思路2(从前往后)

  • 上述思路给出的是从后往前查找的贪心算法,现在找出从前往后的贪心算法
  • 首先我们假定一个当前能走到的最大值maxIndex,然后我们以这个为界进行遍历检查
  • 遍历时随时更新maxIndex的值,maxIndex = max(maxIndex, i+nums[i])
  • 如果在遍历过程中maxIndex > 数组长度就返回true,遍历完成都没有return,最后返回false

代码实现

public class Solution {
    public boolean canJump(int[] nums) {
        if(nums == null||nums.length == 0)
            return false;
        //初始化的maxindex值为nums[0];
        int maxIndex=nums[0];
        for(int i=0;i<=maxIndex;i++)
            {
            if(maxIndex>=nums.length-1)
                return true;
            maxIndex = Math.max(maxIndex, i+nums[i]);
        }
        return false;
    }
}

相关文章

  • Jump Game(Leetcode55)

    题目 给定一个非负数组,从第0个下标开始跳,能跳过的最大步长为这个下标对应的数组值,求问能不能从起始节点跳到数组的...

  • LeetCode No.1 跳数

    1. LeetCode55题目链接链接 https://leetcode.com/problems/jump-ga...

  • [DP]45. Jump Game II

    前篇 55. Jump Game 45. Jump Game II 感谢Jason_Yuan大神优秀的解析:链接 ...

  • Custer Jump

    Custer Jump is a jumping game, you will love this game. T...

  • Jump Game

    这道题有点像大富翁呀,题意也很简单明确,就不解释了。我首先想到的就是用迭代遍历硬杠它。从最大值开始跳,每个位置都是...

  • Jump Game

    Jump Game 题目分析:找出能够到达的最远距离是否能到最后一个索引。我的想法是从第一个开始,不断更新最长到达...

  • Jump Game

    Jump Game 今天是一道有关贪婪算法的题目,来自LeetCode#55,难度为Medium,Acceptan...

  • Jump Game

    https://leetcode.com/problems/jump-game-ii/给定一个数组nums,数组内...

  • Jump Game

    版权声明:本文为博主原创文章,转载请注明出处。个人博客地址:https://yangyuanlin.club欢迎来...

  • 坐标型--(b)跳格子

    1) jump game I, II (LeetCode 55, 45) [ 要求] 给出jump power数组...

网友评论

      本文标题:Jump Game(Leetcode55)

      本文链接:https://www.haomeiwen.com/subject/nvlzqqtx.html