LeetCode55. 跳跃游戏

题目

分析

其实这题比较坑,不去关心每次究竟跳几步,而是看每次最多能跳到哪里,最后的最高跳范围包含结果就成功。贪心每一次最大范围。

需要注意的是,之前跳的范围不含本层,那么就为false。

代码

自己

 1 class Solution {
 2 public:
 3     bool canJump(vector<int>& nums) {
 4         if(nums.size() == 1) return true;
 5         int l = 0;//l表示实际跳跃的最大范围
 6         for(int i = 0;i < nums.size();i++){
 7             if(l < i) return false;
 8             l = max(l,i+nums[i]);
 9         }
10         return true;
11     }
12 };

Carl大佬

 1 class Solution {
 2 public:
 3     bool canJump(vector<int>& nums) {
 4         if(nums.size() == 1) return true;
 5         int l = 0;
 6         for(int i = 0;i <= l;i++){
 7             l = max(i+nums[i],l); //当前可跳的最大范围
 8             if(l >= nums.size()-1){
 9                 return true;
10             }
11         }
12         return false;
13     }
14 };