055. Jump Game

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了055. Jump Game相关的知识,希望对你有一定的参考价值。

方法一:递归,超时

 1 class Solution {
 2 public:
 3     bool canJump(vector<int>& nums) {
 4         if (nums.size() < 2) return true;
 5         else {
 6             for (int i = 1; i <= *nums.begin(); ++i) {
 7                 vector<int> vec(nums.begin() + i, nums.end());
 8                 if (canJump(vec)) return true;
 9             }
10             return false;
11         }
12     }
13 };

 

方法二:动态规划

 1 class Solution {
 2 public:
 3     bool canJump(vector<int>& nums) {
 4         if (nums.size() < 2) return true;
 5         else {
 6             vector<int> reach(nums.size(), 0);
 7             reach[0] = 1;
 8             for (size_t i = 1; i < nums.size(); ++i) {
 9                 bool flag = false;
10                 for (int j = i - 1; j >= 0; --j) {
11                     if (reach[j] && nums[j] >= i - j) {
12                         flag = true;
13                         reach[i] = 1;
14                         break;
15                     }
16                 }
17                 if (!flag) return false;
18             }
19             return true;
20         }
21     }
22 };

 

以上是关于055. Jump Game的主要内容,如果未能解决你的问题,请参考以下文章

Jump Game II

55 Jump Game i && 45 Jump Game ii

来见识一下贪心算法:Jump Game

Jump Game II

LeetCode 55. Jump Game

45. Jump Game II