自学内容网 自学内容网

【Leecode】Leecode刷题之路第45天之跳跃游戏II

题目出处

45-跳跃游戏II-题目出处

题目描述

在这里插入图片描述

个人解法

思路:

todo

代码示例:(Java)

todo

复杂度分析

todo

官方解法

45-跳跃游戏II-官方解法

这道题是典型的贪心算法,通过局部最优解得到全局最优解。以下两种方法都是使用贪心算法实现,只是贪心的策略不同。

方法1:反向查找出发位置

思路:

在这里插入图片描述

代码示例:(Java)

public class Solution1 {
    public int jump(int[] nums) {
        int position = nums.length - 1;
        int steps = 0;
        while (position > 0) {
            for (int i = 0; i < position; i++) {
                if (i + nums[i] >= position) {
                    position = i;
                    steps++;
                    break;
                }
            }
        }
        return steps;
    }


}

复杂度分析

在这里插入图片描述

方法2:正向查找可到达的最大位置

思路:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码示例:(Java)

public class Solution2 {
    public int jump(int[] nums) {
        int length = nums.length;
        int end = 0;
        int maxPosition = 0;
        int steps = 0;
        for (int i = 0; i < length - 1; i++) {
            maxPosition = Math.max(maxPosition, i + nums[i]);
            if (i == end) {
                end = maxPosition;
                steps++;
            }
        }
        return steps;
    }

    
}

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组长度。
  • 空间复杂度:O(1)。

考察知识点

收获

1.贪心算法

Gitee源码位置

45-跳跃游戏II-源码


原文地址:https://blog.csdn.net/Prince140678/article/details/143651666

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!