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

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

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

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

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

示例:

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

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

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


  
  1. class Solution {
  2. public int jump(int[] nums) {
  3. int maxIndex=0;//当前能跳到最远的地方
  4. int ans=0;//答案
  5. int len=nums.length;//数组长度
  6. if(len==1)return 0;
  7. int i=0;
  8. while(maxIndex<len-1){
  9. ans++;
  10. int temp=0;
  11. for(int j=i;j<=maxIndex;++j){
  12. if(temp<j+nums[j])temp=j+nums[j];
  13. }//找到下次能挑到最远的地方,并赋值。
  14. i=maxIndex;
  15. maxIndex=temp;
  16. }
  17. return ans;
  18. }
  19. }

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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