LintCode 116. 跳跃游戏 JavaScript算法

   日期:2020-09-12     浏览:175    评论:0    
核心提示:描述给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。判断你是否能到达数组的最后一个位置。说明数组A的长度不超过5000,每个元素的大小不超过5000样例- 样例 1输入 : [2,3,1,1,4]输出 : true- 样例 2输入 : [3,2,1,0,4]输出 : false挑战这个问题有两个方法,一个是贪心和 动态规划。贪心方法时间复杂度为O(N)。动态规划方法的时间复杂度为为O(n^2)。我们手动设置小型

描述

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

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

判断你是否能到达数组的最后一个位置。

说明

数组A的长度不超过5000,每个元素的大小不超过5000

样例

- 样例 1

输入 : [2,3,1,1,4]
输出 : true

- 样例 2

输入 : [3,2,1,0,4]
输出 : false

挑战

这个问题有两个方法,一个是贪心和 动态规划。

贪心方法时间复杂度为O(N)。

动态规划方法的时间复杂度为为O(n^2)。

我们手动设置小型数据集,使大家可以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动态规划的方式完成它,你可以尝试贪心法,以使其再次通过一次。

解析

const canJump = function (A) { 
    let k = 0;
    for (let i = 0; i < A.length; i++) { 
        if (i > k) return false;
        k = Math.max(k, i + A[i]);
    }
    return true;
}

运行结果

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服