目录
题目描述

贪心
正向查找可到达的最大位置
时间复杂度O(n)
cpp
class Solution {
public:
int jump(vector<int>& nums) {
int n = nums.size();
if(n == 1)
return 0;
int cur_cover = 0;
int cover = 0;
int res = 0;
for(int i = 0;i <= cover;i++){
if(nums[i]+i > cover){
cover = nums[i]+i;
}
if(i == cur_cover){
res++;
cur_cover = cover;
if(cur_cover >= n-1)
break;
}
}
return res;
}
};
反向查找出发位置
时间复杂度O(n^2)
cpp
class Solution {
public:
int jump(vector<int>& nums) {
int res = 0;
int n = nums.size();
int destination = n-1;
while(destination > 0){
for(int i = 0; i<=destination;i++){
if(i+nums[i] >= destination)
{
destination = i;
res++;
break;
}
}
}
return res;
}
};