45. Jump Game II

目录

题目描述

贪心


题目描述

45. Jump Game II

贪心

正向查找可到达的最大位置

时间复杂度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;
    }
};