zoukankan      html  css  js  c++  java
  • leetcode(55)跳跃游戏

    跳跃游戏

    1、解题思路:自底向上,动态规划

    class Solution {
        public boolean canJump(int[] nums) {
            int len = nums.length;
            if(len<=1){
                return true;
            }
            boolean[] temps = new boolean[len];
            return canJump2(nums,len,0,temps);
        }
        public boolean canJump2(int[] nums,int len,int start,boolean[] temps){
            if(temps[start]){
               return false; 
            }
            if(start+nums[start]>=len-1){
                return true;
            }
            for(int i=nums[start];i>0;i--){
                if(canJump2(nums,len,start+i,temps)){
                    return true;
                }
            }
            temps[start]=true;
            return false;
        }
    }

     2、动态规划,自顶向下

    3、一种很巧的方法

    解题思路:从右向左进行遍历,始终记住最左边的可以到达的点,这样子,如果最左边的点等于0,证明就可以到达了。

    class Solution {
        public boolean canJump(int[] nums) {
            int len = nums.length;
            if(len<=1){
                return true;
            }
            int min = len-1;
            for(int i=len-2;i>=0;i--){
                if(nums[i]+i>=min){
                    min=i;
                }
            }
            if(min==0){
                return true;
            }else{
                return false;
            } 
        }
    }
  • 相关阅读:
    3月6日
    2月28日
    2月23日
    2月20日
    2月19日
    2月18日
    2月17日
    2月16日
    2月15日
    面试算法题——硬币找零
  • 原文地址:https://www.cnblogs.com/erdanyang/p/11140528.html
Copyright © 2011-2022 走看看