zoukankan      html  css  js  c++  java
  • 045 Jump Game II 跳跃游戏 II

    给定一个非负整数数组,你最初位于数组的首位。
    数组中的每个元素表示你在该位置的最大跳跃长度。
    你的目标是用最小跳跃次数到达最后一个索引。
    例如:
    给定一个数组 A = [2,3,1,1,4]
    跳到最后一个索引的最小跳跃数是 2。(从索引 0 跳到 1 跳1步,然后跳3步到最后一个索引。)
    注意:
    假设你总是可以到达最后一个索引位置。
    详见:https://leetcode.com/problems/jump-game-ii/description/

    Java实现:

    curReach是维护的当前能跳到的最大位置,maxReach是指从之前的点能到达到得最远位置。
    当i 大于之前点能跳到的最大位置时,就需要跳一步,并把curReach更新为maxReach。
    最后返回若是curReach能到最后一个元素,就返回step, 若是到不了,就说明根本走不到最后一步,返回0。

    参考:http://www.cnblogs.com/Dylan-Java-NYC/p/4834079.html

    class Solution {
        public int jump(int[] nums) {
            int n=nums.length;
            int step=0;
            int curReach=0;
            int maxReach=0;
            for(int i=0;i<n;++i){
                if(curReach<i){
                    ++step;
                    curReach=maxReach;
                }
                maxReach=maxReach>(nums[i]+i)?maxReach:(nums[i]+i);
            }
            return maxReach<n-1?0:step;
        }
    }
    

     C++实现:

    class Solution {
    public:
        int jump(vector<int>& nums) {
            int n=nums.size();
            int res=0;
            int curRch=0;
            int maxRch=0;
            for(int i=0;i<n;++i)
            {
                if(curRch<i)
                {
                    ++res;
                    curRch=maxRch;
                }
                maxRch=max(maxRch,nums[i]+i);
            }
            return res;
        }
    };
    

     参考:http://www.cnblogs.com/ganganloveu/p/3761715.html

  • 相关阅读:
    java运算符优先级
    快排
    dpkg
    BZOJ 4487 染色问题
    BZOJ 3530 数数
    XSY 2754 求和
    BZOJ 4559 成绩比较
    广义容斥-二项式反演-容斥系数
    线性基学习笔记及其相关证明
    BZOJ 2754 喵星球上的点名
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8690943.html
Copyright © 2011-2022 走看看