LeetCode 55 跳跃游戏

LeetCode题目

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可跳跃的最大长度。判断你是否能够到达最后一个位置。
跳跃游戏

思路

刚刚看到这个题目的时候想了半天一点思路都没有,于是只能看看别人的思路然后自己写(毕竟太菜了)。
这个的大体思路就是一个贪心算法(看之前也要了解一下贪心),说白了就是大事化小,小事化了的解决方法,先将问题分解成子问题,然后找到子问题的最优解,然后子问题最优解的叠加就是最后问题的最优解。
然后解这个题目的思路总结成一句话就是:每一次遍历都取前面所有遍历元素所能到达最远位置的最大值,如果该最大值大于或等于给定数组nums的长度,则说明游戏成功,反之则失败。

代码
class Solution {
    public boolean canJump(int[] nums) {
        int len = nums.length;
        int max = 0;
        if (len <= 1) {
            return true;
        }
        for (int i=0;imax) {
                return false;
            }
            int temp = max;
            if (nums[i] + i > temp) {
                max = nums[i] + i;
            } else {
                max = temp;
            }
        }
        return true;
    }
}

结果

LeetCode 55 跳跃游戏_第1张图片
结果

你可能感兴趣的:(LeetCode 55 跳跃游戏)