数组跳

作者: lxr_ | 来源:发表于2022-09-20 11:11 被阅读0次
#include <iostream>
#include <vector>

using namespace std;

//数组跳问题,给一个非负整数数组(数组中的每个元素代表在该位置可以跳跃的最大长度),使用最少的跳跃次数到数组的最后一个人位置。

int MaxCount(vector<int> arr)
{
    if (arr.size() == 0 || arr.size() == 1) //如果数组个数为0或者为1,则不需要跳
    {
        return 0;
    }

    if (arr[0] > arr.size())                //如果第一个数大于数组个数,则一步直接可以到达
    {
        return 1;
    }

    int cur = 0, pre = 0;                   //当前能到达的最远位置和之前能到达的最远位置
    int jums = 0;

    int i = 0;                              //当前遍历的数组下标

    while (cur < arr.size() - 1)            //如果当前能到达最后一个位置,则结束循环
    {
        jums++;

        pre = cur;                          //更新之前所能到达的最远位置
        for (; i <= pre; i++)               //遍历在上次可以跳到的范围内,当前能跳到的最远的范围
        {
            cur = max(cur, i + arr[i]);     //更新当前能够跳的最远的位置
        }

        if (cur == pre)                     //如果当前能到达的位置和上次没有变化,则到不了最后一个位置
            return -1;
    }

    return jums;

}
int main(int argc, char** argv)
{
    //vector<int> arr = { 2,3,1,1,4 };
    vector<int> arr = { 3,2,1,0,4 };

    int jumps = MaxCount(arr);
    cout << jumps << endl;

    return 0;
}

相关文章

  • 数组跳

  • 45.跳跃游戏 II

    【Description】给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳...

  • 终极算法整理

    我自己给算法的分类有这么几种 数据结构类的数组 : 变种太多二维数组堆栈队列HashMap树链表其他:trie,跳...

  • LeetCode打卡挑战之跳跃游戏 II

    题目描述 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳...

  • 跳跃游戏

    LintCode题目地址给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳...

  • Jump Game(Leetcode55)

    题目 给定一个非负数组,从第0个下标开始跳,能跳过的最大步长为这个下标对应的数组值,求问能不能从起始节点跳到数组的...

  • 44. Jump Game II

    题目 给定一个非负数组 nums,你一开始在数组的第一个索引。数组中的每个元素表示你在该位置可以跳的最大距离。你的...

  • leetCode 45 jump-game-ii本来以为是道dp

    给定一个数组,值是跳动区间,问跳多少次能跳完。 其实很简单,每个位置上对应一个能跳的区间的一个范围,取最远的就行,...

  • 55、Jump Game

    Example非负整数数组,可以初始化第一次的位置. 每个元素的值代表跳跃的最长位置返回是否可以跳完数组 思路不断...

  • jQuery(二)_遍历

    jQuery(二)_遍历 each 重写each 遍历text 遍历html 向每个div中添加数组项,点击可以跳...

网友评论

      本文标题:数组跳

      本文链接:https://www.haomeiwen.com/subject/ycqmortx.html