美文网首页
LeetCode45 跳跃游戏II

LeetCode45 跳跃游戏II

作者: 枫叶忆 | 来源:发表于2019-04-23 23:05 被阅读0次

    题目:

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

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

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

    示例:

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

    说明:

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

    使用贪心算法思想

    用两个下标,一个记录当前可以到达的最远位置,遍历过程中,只有到该范围最远位置,才更新

    另一个记录在第一个记录范围内,下一次可以到达的最远位置。

    并在第一个下标更新时,第二个下标赋值给第一个;

    class Solution {

        public int jump(int[] nums) {

            if(nums.length < 2){

                return 0;

            }

            //当前可以达到的最远位置

            int cur_max_index = nums[0];

            //遍历过程中,可达最远的位置

            int pre_max_index = nums[0];

            int jump_min = 1;

            for(int i = 0; i < nums.length; i++){

                if(cur_max_index < i){

                    jump_min++;

                    cur_max_index = pre_max_index;

                }

                if(pre_max_index < nums[i] + i){

                    pre_max_index = nums[i] + i;

                }

            }

            return jump_min;

        }

    }

    相关文章

      网友评论

          本文标题:LeetCode45 跳跃游戏II

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