T45. Mid.跳跃游戏 II

结果马马虎虎,内存消耗效果还行

首先看一下题目描述

首先上一下代码

class Solution {

public:

    int jump(vector<int>& nums) {

    int min_num=0, len=nums.size(),index=0,sum=0,newind=0;

        if(len<=2)  return len-1;

    while(index<len-1){

        sum=0;

        for(int i=1;i<=nums[index];i++){

            if((index+i)==len-1){

                return min_num+1;

            }else{

                if(nums[index+i]+i>=sum){

                    sum=nums[index+i]+i;

                    newind=i;

                }

            }

        }

        index+=newind;

        min_num++;      

    }

    return min_num;

}

};

算法核心原理如下:

当给定的数组长度小于等于2时候,最小跳跃次数就是长度-1;

大于二的时候,维护一个遍历下标index, 从0遍历到数组末尾。根据遍历到的数组的值(记它为for循环的代码执行次数,每一次向后蔓延,寻找遍历到的值与下标i和的最大值,相同取下标大的那个。然后每一次执行求最大值时候,要判断是否到达数组终点,如果到了直接返回最大次数+1;否则,index自增i,直到遍历结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值