当前位置:   article > 正文

贪心算法---跳跃游戏

贪心算法---跳跃游戏

题目:

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false

思路:求局部最优解:每次取最大跳跃步数(取最大覆盖范围),每移动一个单位,就更新最大覆盖范围。整体最优解:最后得到整体最大覆盖范围,看是否能到终点。

代码:

  1. public boolean canJump(int[] nums) {
  2. if(nums.length==1)
  3. return true;
  4. int cover=0;//覆盖范围,保存区间最右下标
  5. //在覆盖范围内更新覆盖范围
  6. for(int i=0;i<=cover;i++){
  7. cover=Math.max(i+nums[i],cover);
  8. if(cover>=nums.length-1)//如果最右下标>=数组最右下标,则一定能到达最后一个下标
  9. return true;
  10. }
  11. return false;
  12. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/998509
推荐阅读
相关标签
  

闽ICP备14008679号