zoukankan      html  css  js  c++  java
  • LeetCode_Jump Game II

     Given an array of non-negative integers, you are initially positioned at the first index of the array.
    
    Each element in the array represents your maximum jump length at that position.
    
    Your goal is to reach the last index in the minimum number of jumps.
    
    For example:
    Given array A = [2,3,1,1,4]
    
    The minimum number of jumps to reach the last index is 2. (Jump 1 step from index 0 to 1, then 3 steps to the last index.)
    

      Greedy:  keep the current maximum reach distance, and the number of steps to reach this current maximum distances, and keep another variable to record the next maximum reachable distance, which cost the current steps plus 1. The key idea behind is that, all the positions before the maximum reachable distance would be able to be reached! Then we linear scan the array to keep updating the current maximum and the next maximum as well as the number of steps. We can achieve the linear time algorithm

    class Solution {
    public:
        int jump(int A[], int n) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            int steps = 0;
            int currMax = 0;
            int nextMax = 0;
            for(int i = 0; i< n; i++)
            { 
              if(i > currMax)
              {
                currMax = nextMax;
                steps++;
              }
              
              nextMax = nextMax > i+A[i] ? nextMax : i+A[i] ; 
            
            }
                return steps ;
        }
    };
  • 相关阅读:
    JSP学习-10-EL表达式
    深入浅出Mybatis(一)
    第10章—开启事务
    第09章—使用Lombok插件
    第08章—整合Spring Data JPA
    第06章—热部署
    第05章—Swagger2打造在线接口文档
    第03章—打造RESTful风格API
    第04章—整合Mybatis
    第01章—快速构建
  • 原文地址:https://www.cnblogs.com/graph/p/3210226.html
Copyright © 2011-2022 走看看