[贪心] LeetCode 55 跳跃游戏

Leetcode 55 跳跃游戏


前言:题目是LeetCode贪心分组中的题目,难度中等,感觉就像是基础的贪心题目,其他解决方案暂时不做讨论。


题目分析

首先题目的‘成功解’为走到或者越过末尾,其中的路线为每一次的跳跃决策(其中决策的规则为当前可达最远范围内的所有点),那么我们可以具体分析其中的每一次跳跃:设当前节点为a可跳跃距离为x ,其中a到x中每一个节点到a的距离为i(x),本次跳跃的收最大化为跳跃距离加上跳跃后节点的可跳跃距离为最大值

点击查看代码
class Solution {
    public boolean canJump(int[] nums) {
        int mark = 0;
        while(mark < nums.length){
            int max = 0 ;
            int next = 0;
            if(mark+nums[mark]>=nums.length-1||nums.length==1)return true;
            if(nums[mark]==0)return false;
            for(int i = mark+1;i< nums.length&&i<=nums[mark]+mark;i++){
                if(max<=nums[i]+i){
                    next = i;
                    max = nums[i]+i;
                }
            }
            mark = next;
        }
        return true;
    }
}
posted @ 2022-03-03 00:06  什么塞瓦定理啊  阅读(25)  评论(0)    收藏  举报