美文网首页
【算法题】15.跳跃游戏

【算法题】15.跳跃游戏

作者: _涼城 | 来源:发表于2020-04-17 14:01 被阅读0次
题目

给定一个非负整数数组,你最初位于数组的第一个位置。

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

判断你是否能够到达最后一个位置。

示例1:
输入: [2,3,1,1,4]
输出: true
解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。
示例2:
输入: [3,2,1,0,4]
输出: false
解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。
解析:
  1. 根据贪心的策略,记录可以跳跃的最远位置,是为最优解。
  2. 遍历至数组倒数第二个索引,在遍历中当前索引位置可以跳跃的最远长度是否大于当前记录的最远跳跃位置,若可以则更新可以跳跃的最远长度
  3. 判断最终可以跳跃的最远长度 是否大于等于当前数组最后位置的索引(也就是数组长度-1)。
复杂度分析:

时间复杂度: O(N)
空间复杂度: O(1)

代码
bool canJump(int* nums, int numsSize){
     int maxLength = 0;
     for (int i = 0; i <numsSize - 1;i++){
         if(i <= maxLength){
             if(maxLength < i + nums[i]){
                 maxLength = i + nums[i];
             }
         }
     }
     return  maxLength >= numsSize - 1;
   
}

相关文章

  • 【算法题】15.跳跃游戏

    题目 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断...

  • lettcode刷题之贪心

    leetcode刷题,使用python 1, 跳跃游戏 II —— 0045 贪心算法给定一个长度为 n 的 0...

  • 贪心算法题:leetcode 55 跳跃游戏

    /来源:本人微信公众号:豫见成电我会连载推送一些关于C语言,网络空间安全,数学建模,算法方面的学习经历,还有一些成...

  • 跳跃游戏 II 算法swift

    题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的...

  • Java算法(4):跳跃游戏

    给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。使用最少跳跃次...

  • leetcode第55题:跳跃游戏

    题目描述 考点 数组 贪心算法 解题思路 从头遍历数组,使用reach记录能够到达的最远位置;(1)如果当前遍历的...

  • 55. 跳跃游戏/ 1109. 航班预订统计

    55. 跳跃游戏 相关标签 : 数组, 贪心算法 1109. 航班预订统计 相关标签 : 数组 数学

  • LeetCode 第45题:跳跃游戏 II

    1、前言 2、思路 1⃣️ 动态规划:定义 dp[i] 表示到 i 位置的最小步骤。 2⃣️ 贪心:贪心的思路跟跳...

  • 55(45)-跳跃游戏Ⅰ、Ⅱ-贪心算法

    写在前面 贪心算法说简单也简单,因为找到局部的最优解就可以了,说难也确实不是很好想,因为这种思想在想的时候总会有种...

  • 跳跃游戏

    可以正向扫描数组,记录当前位置可以到达最远的位置,a、游标要小于可以到达最远的位置,否则return false。...

网友评论

      本文标题:【算法题】15.跳跃游戏

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