zoukankan      html  css  js  c++  java
  • LeetCode 55. Jump Game (跳跃游戏)

    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.


    题目标签:Array

      这道题目给了我们一个array,其中每一个数字代表着可以跳跃的最大步数,让我们判断,能不能跳跃到最后一个数字,这里没有要求要刚刚好跳到最后,超过也可以。一开始自己写了一个递归方法,但是因为速度慢,无法通过全是1的array。所以这道题目用Dynamic Programming方法,遍历array,过程中,我们只需要维护一个值 - 最远能跳跃到的地方 farthestNumIndex。对于每一个数字,我们都算一下它能最远跳跃到哪里,然后和 我们维护的 farthestNumIndex 比较,取大的。所以当我们知道了我们最远能够跳跃到哪里的话,如果遇到了原题中的第二种可能,怎么也跳跃不过0的这种情况,我们只需要判断目前的数字的index i 是不是超过了 farthestNumIndex,超过了,就直接判断为false了。 当farthestNumIndex 达到了,或者超越了最后一位数字的 index,就判断true。

    Java Solution:

    Runtime beats 39.82% 

    完成日期:07/19/2017

    关键词:Array

    关键点:Dynamic Programming - 维护一个跳跃到最远的值

     1 public class Solution 
     2 {
     3     public boolean canJump(int[] nums) 
     4     {
     5         int farthestNumIndex = 0; // the farthest place we can jump to
     6         boolean res = false;
     7         
     8         for(int i=0; i<nums.length; i++)
     9         {
    10             if(i > farthestNumIndex) // meaning there is no way to jump further
    11                 break;
    12             
    13             if(farthestNumIndex >= nums.length - 1) // meaning we can jump to or over the last number
    14             {
    15                 res = true;
    16                 break;
    17             }
    18             // keep tracking the farthest spot we can jump
    19             farthestNumIndex = Math.max(farthestNumIndex, i + nums[i]);
    20         }
    21 
    22         return res;
    23     }
    24     
    25 }

    参考资料:

    http://www.cnblogs.com/grandyang/p/4371526.html

    LeetCode 算法题目列表 - LeetCode Algorithms Questions List

  • 相关阅读:
    flex 弹性盒布局 移动端首页
    less+rem基础使用
    github 本地操作
    git 码云
    react基础知识
    css样式
    uni-app 知识点
    web app
    2019年一半已过,这些大前端技术你都GET了吗?- 下篇
    2019年大前端技术周刊-#31周
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/7209110.html
Copyright © 2011-2022 走看看