每日一道领扣算法

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

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

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

示例:

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

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

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/jump-game-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

int jump(int* nums, int numsSize){
    //1.分析程序,非负整数数组,加上说明中的总可以到达数组的最后一个数组,就说明可以为零,但不影响到最后一个位置,所以0前面的数至少有一个可以跳
    //过,所以0是不影响的
    //2.最少的步数到达最后,那我就从最后一个数倒推,假如我是最后一个数,那么前面的可以直接可以到我的同学排个队
    //3.我挑一个最靠前的,然后这个最靠的数就又成了最后一个数,它前面的数只要最少步数到达它就ok了。典型的贪心算法
    

 int i =numsSize-1;
    int result=0;
    while(i>0)
    {
        int max;
        for(int j =i-1;j>=0;j--)
        {
            
            if(nums[j]>=(i-j))
             max =j;
        }
        i=max;
        result++;
    }
return result;

//这执行用时有点高欸!
}

执行结果:
通过
显示详情
执行用时 :
640 ms
, 在所有 c 提交中击败了
17.14%
的用户
内存消耗 :
8.1 MB
, 在所有 c 提交中击败了
68.85%
的用户

发布了37 篇原创文章 · 获赞 1 · 访问量 668

猜你喜欢

转载自blog.csdn.net/zzuzhaohp/article/details/103238904
今日推荐