温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaScript怎么解决跳跃游戏算法题

发布时间:2022-01-05 16:20:30 阅读:133 作者:iii 栏目:大数据
前端开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇内容主要讲解“JavaScript怎么解决跳跃游戏算法题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript怎么解决跳跃游戏算法题”吧!

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

示例 1:

输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。

示例 2:

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

通过观察发现:

如果数组中不存在0,一定可以跳到最后。如果数组中存在0的情况下,要跳到最后必须满足以下条件,从0前边的某一个位置上开始跳跃一定能跳过这个0才可以。

例如例2中的数组,如果是以下几种情况就可以跳到最后:

1[4,2,1,0,4]2[3,3,1,0,4]3[3,2,2,0,4]

发现了什么规律呢?游戏者所在的位置的数值一定要大于0所在位置索引值当前位置索引值的距离差。

4>3-0;4所在的位置索引值为0,距离0的索引值相差3,4>3,所以可以跳过0,依次类推3>3-1;2>3-2;

找到了这道题的核心解法之后,大体思路就是,找出数组中所有0的位置,并且判断此位置之前的所有数字是否能跳过0的位置。代码如下:

var canJump = function(nums) {  var canJump0List = [];  for (var i = 0; i < nums.length - 1; ++i) {    if (nums[i] === 0) {//找到0所在位置,标记为false      var canJump0 = false;//进行判断,将此位置之前数字进行判断,只要有一个能满足条件就可以跳过这个0      for (var j = i - 1; j >= 0; --j) {// 游戏者所在的位置的数值一定要大于0所在位置索引值与当前位置索引值的距离差                  if (nums[j] > i - j) {          canJump0 = true;          break;        }      }//数组中可能有多个0;所以讲所有0判断的结果放入一个数组      canJump0List.push(canJump0);    }  }//最后对数组进行判断,只要有一个不满足条件返回false,即不能跳到最后  for (var i = 0; i < canJump0List.length; ++i) {    if (!canJump0List[i]) {      return false;    }  }  return true;};

到此,相信大家对“JavaScript怎么解决跳跃游戏算法题”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4582019/blog/4379206

AI

开发者交流群×