55. 跳跃游戏

这篇具有很好参考价值的文章主要介绍了55. 跳跃游戏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目介绍

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标。

示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:

输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

提示:文章来源地址https://www.toymoban.com/news/detail-611249.html

  • 1 <= nums.length <= 3 * 104
  • 0 <= nums[i] <= 105

解答

C++
class Solution {
public:
    // 把nums上的数字当做能量
    // 假设每往前走一格需要消耗一格能量
    bool canJump(vector<int>& nums) {
        if(nums.size() == 0) return true;

        int cur = nums[0], i = 1; // i 表示走的位置
        for(; cur != 0 && i < nums.size(); ++i)
        {
            cur--;
            // 遇到能量多余当前剩余能量的位置时,替换为当前位置的能量值
            if(cur < nums[i]) cur = nums[i];
        }
        return i == nums.size();
    }

    // 每个位置都计算自己能达到的最远距离
    // 算出来能达到的最远距离是最后一个位置说明可达
    bool canJump1(vector<int>& nums) {
        int maxDis = 0;
        if(nums.size() == 0)    return true;

        // 迭代进行计算,前面计算出的最远可达距离
        // 来判断是否能从某点出发
        for(int i = 0; i < nums.size(); ++i)
        {
            // 无法到达位置i,直接return
            if(i > maxDis)
            {
                return false;
            }
            maxDis = max(maxDis, i + nums[i]);
        }
        return true;
    }
};
python
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        maxDis = 0
        if len(nums) == 0:
            return True

        for i in range(0, len(nums)):
            if(i > maxDis):
                return False
            maxDis = max(maxDis, i + nums[i])

        return True

到了这里,关于55. 跳跃游戏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode55. 跳跃游戏

    给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 示例 2: 方法一:贪心 我们可以用贪心的方法解决这个问题。 设想一下,对于数组中的任意一个位置 y,我们如何判

    2024年02月02日
    浏览(40)
  • Killing LeetCode [55] 跳跃游戏

    给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 Ref Link:https://leetcode.cn/problems/jump-game/ Difficulty:Medium Tag:Array、Dynamic Programming Updated Date:2023-07-15 示例1: 示例 2:

    2024年02月16日
    浏览(37)
  • LeetCode刷题——55. 跳跃游戏(HOT100)

    ✊✊✊🌈大家好!本篇文章将较详细介绍贪心相关的题目 55. 跳跃游戏 ,提供两种解法。代码语言为: C++代码 😇。 🔒1、题目: 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最

    2024年01月20日
    浏览(48)
  • LeetCode-Java:55.跳跃游戏

    给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1: 示例 2: ①暴力递归法,将情况分解为当前元素是0则此路不通,非

    2024年02月05日
    浏览(46)
  • 算法leetcode|45. 跳跃游戏 II(rust重拳出击)

    给定一个长度为 n 的 0 索引整数数组 nums 。初始位置为 nums[0] 。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 = j = nums[i] i + j n 返回到达 nums[n - 1] 的 最小跳跃次数 。生成的测试用例可以到达 nums[n - 1] 。

    2023年04月15日
    浏览(51)
  • 【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴 们点赞、关注! class   Solution :      def   findContentChildren ( self ,  g :  List [ int ],  s

    2024年02月04日
    浏览(55)
  • 算法 贪心2 || 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

    如果想到其实 最终利润是可以分解的 ,那么本题就很容易了! 如何分解呢? 假如第0天买入,第3天卖出,那么利润为:prices[3] - prices[0]。 相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。 此时就是把利润分解为每天为单位的维度,而不是从0天到第3天整体去

    2023年04月13日
    浏览(49)
  • Day32 贪心算法 part02 122. 买卖股票的最佳时机 II 55. 跳跃游戏 45. 跳跃游戏 II

    思路:计算每天的利润,利润如果为正,加到结果中去

    2024年01月19日
    浏览(44)
  • LeetCode 45题:跳跃游戏

    给定一个长度为  n  的  0 索引 整数数组  nums 。初始位置为  nums[0] 。 每个元素  nums[i]  表示从索引  i  向前跳转的最大长度。换句话说,如果你在  nums[i]  处,你可以跳转到任意  nums[i + j]  处: 0 = j = nums[i]   i + j n 返回到达  nums[n - 1]  的最小跳跃次数。生成的测试用

    2024年02月10日
    浏览(34)
  • leetcode 45. 跳跃游戏 II

             本题为 跳跃游戏I 的升级版,保证可以到达终点的情况下,要求出最短的跳跃次数。         还是仿照 跳跃游戏I 的思路,定义一个cover用于记录最大覆盖范围,终止条件是:        cover = nums.size()-1   ,还要定义一个变量 largest 用于记录当前最远覆盖范围的下

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包