55. Jump Game (DP)

 1 //Old
 2 class Solution {
 3     public boolean canJump(int[] nums) {
 4         int n = nums.length;
 5         if(n == 0) return false;
 6         if(n == 1) return true;
 7         if(nums[0] == 0) return false;
 8         boolean[] res = new boolean[n];
 9         res[0] = true;
10         for(int i = 0; i < n; i++) {
11             if(res[i] == true) {
12                 for(int j = 1; j <= nums[i] && j + i < n ; j++) {
13                     if(res[i + j] == false) {
14                         res[i + j] = true;
15                     }
16                     
17                 }    
18             }
19             
20         }
21         return res[n - 1];
22     }
23 }
24 
25 //New
26 //从后往前 看看最多能不能到0
27 class Solution {
28     public boolean canJump(int[] nums) {
29         int n = nums.length;
30         if(n == 1) return true;
31         int last = n - 1;
32         for(int i = last - 1; i >= 0; i--) {
33             if(nums[i] >= last - i) {
34                 last = i;
35             }
36         }
37         return last == 0;
38     }
39 }

 

posted @ 2018-08-16 11:37  jasoncool1  阅读(243)  评论(0编辑  收藏  举报