zoukankan      html  css  js  c++  java
  • Leetcode::JumpGame

    Description:

    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.

    Determine if you are able to reach the last index.

    For example:
    A = [2,3,1,1,4], return true.

    A = [3,2,1,0,4], return false.

    分析: 此题上来直接的解法,是建一个bool的vector,然后从每一点出发,按照该点的值来更新后面的vector里面的bool值

    然后看最后一点是否为false. 

    这样当然是可以的,但是这样每一点都要往后遍历此点值步,最坏情况时 n+n-1 + n-2 +... +1,即O(n^2),最终会超时。

    所以我们要建立的遍历一遍就能得到结果的方法。其方法很简单:维护一个maxstep变量,即当前点及之前所有点能够前进的最大值,

    这个值每步更新为 maxstep = max(maxstep-1,A[i]); 这个值在前进道最后的点之前变为0,则结果为false.

    贴上两种算法:

     1 //Faster version
     2 class Solution {
     3 public:
     4     bool canJump(int A[], int n) {
     5         
     6         int maxrec = 1;
     7         
     8         for(int i=0;i<n;i++)
     9         {
    10             maxrec--;
    11             if(i==n-1) return true;
    12             maxrec = max(maxrec,A[i]);
    13             if(maxrec==0)
    14                 break;
    15         }
    16         return false;
    17     
    18     }
    19 };
     1 //TLE version
     2 class Solution {
     3 public:
     4     bool canJump(int A[], int n) {
     5         vector<bool> rec(n,false);
     6         rec[0] = true;
     7         for(int i=0;i<n;i++)
     8         {
     9             if(!rec[i]) continue;
    10             
    11             int step = A[i];
    12             for(int j=0;j<=step;j++)
    13             {
    14                 rec[min(i+j,n-1)]=true;
    15                 if(rec[n-1])
    16                     return true;
    17             }
    18         }
    19         
    20         return rec[n-1];
    21     
    22     }
    23 };
  • 相关阅读:
    elasticsearch 6.x.x 获取客户端方法
    struts2+spring 配置404和500错误页面
    linux 部署redis集群 碰到的坑
    Linux下安装redis
    struts加载spring
    有关struts中DispatchAction的用法小结
    spring AOP原理
    struts2.0的工作原理?
    Spring MVC的实现原理
    spring 的单例模式
  • 原文地址:https://www.cnblogs.com/soyscut/p/3775315.html
Copyright © 2011-2022 走看看