leetcode 55 跳跃游戏

简介: leetcode 55 跳跃游戏

跳跃游戏


e90f4df8797e46c6bd1e3bf98b4e04e0.png

每一个点的覆盖范围不同,能否覆盖到最后一个点

回溯法(超时)

class Solution {
public:
    bool backtraking(vector<int>& nums  , int target ,int step)
    {
        if (step == target) return 1; //检验步子能否到达最后点
        else if (step > target) return 0;
        if(nums[step]==0) return 0;
        for(int j=nums[step] ; j >= 1; j--)
        {
            if(backtraking(nums ,target , step + j )) return 1; 
        }
        return 0;
    }
    bool canJump(vector<int>& nums) {
        int target = nums.size() - 1;
        int step = 0;
        return backtraking(nums,target,step);
    }
};

贪心法

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int cover=0;
        for(int i=0 ; i<nums.size()-1 && i <= cover ; i++) //循环点,保证点是覆盖范围内的
        {
            if(i+nums[i] > cover ) cover = i+nums[i]; //如果当前点的范围大于现在范围,范围更新
        }
        if(cover >= nums.size()-1) return 1;   //如果范围覆盖最后一个点返回成功
        else return 0;
    }
};


二刷

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int right=0;
        for(int left=0 ; left<nums.size()&&left<=right;left++)
        {
            if(nums[left]+left > right) right=nums[left]+left;
        }
        if(right >= nums.size()-1) return true;
        else return false;
    }
};
相关文章
|
2月前
|
算法
LeetCode第55题跳跃游戏
LeetCode第55题"跳跃游戏"的解题方法,通过记录当前最远可达到的位置并判断每个位置是否可达以及能否到达末尾,有效解决了跳跃至数组末尾的可行性问题。
LeetCode第55题跳跃游戏
|
2月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
41 1
|
2月前
|
Python
【Leetcode刷题Python】174. 地下城游戏
LeetCode 174题 "地下城游戏" 的Python解决方案,使用动态规划算法计算骑士从左上角到右下角拯救公主所需的最低初始健康点数。
43 3
|
2月前
|
算法 索引 Python
【Leetcode刷题Python】55. 跳跃游戏
解决LeetCode "跳跃游戏"问题的Python实现代码,使用了贪心算法的思路。代码中初始化最远可到达位置 max_k,并遍历数组 nums,通过更新 max_k 来记录每次能跳到的最远位置,如果在任何时刻 max_k 大于或等于数组的最后一个索引,则返回 True,表示可以到达数组的末尾;如果当前索引 i 超出了 max_k,则返回 False,表示无法继续前进。时间复杂度为 O(n),空间复杂度为 O(1)。
37 1
|
2月前
|
算法
LeetCode第45题跳跃游戏 II
LeetCode第45题"跳跃游戏 II"的解题方法,通过一次循环和选择每个位置的最大可跳距离,有效减少了跳跃次数,简化了问题。
|
4月前
|
算法
力扣经典150题第三十八题:生命游戏
力扣经典150题第三十八题:生命游戏
29 0
|
4月前
|
算法
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
|
4月前
|
算法 机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
|
5天前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
44 6