leetcode45 跳跃游戏II 秒杀所有答案

举报
兔老大 发表于 2021/04/20 01:16:02 2021/04/20
4.4k+ 0 0
【摘要】 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。      从下标为 0 跳到下标为 1 的位置,跳 1 步,然后...

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

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

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

示例:

输入: [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
     从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
说明:

假设你总是可以到达数组的最后一个位置。

思路:每跳一次,计算能跳的范围内,能让下一次跳的最远的地方。


      class Solution {
      public int jump(int[] nums) {
      int maxIndex=0;//当前能跳到最远的地方
      int ans=0;//答案
      int len=nums.length;//数组长度
      if(len==1)return 0;
      int i=0;
      while(maxIndex<len-1){
       ans++;
      int temp=0;
      for(int j=i;j<=maxIndex;++j){
      if(temp<j+nums[j])temp=j+nums[j];
       }//找到下次能挑到最远的地方,并赋值。
       i=maxIndex;
       maxIndex=temp;
       }
      return ans;
       }
      }
  
 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/103250760

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。