Java算法(4):跳跃游戏

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。使用最少跳跃次数达到数组最后一个位置。

输入: [2,3,1,1,4]
输出: 2
解释: 从位置 0 到位置 1 跳 1 步, 然后跳 3 步到达最后一个位置。

解题思路:

贪心算法

代码:
    public int jump(int[] nums) {
        int length = nums.length;
        int end = 0, maxPosition = 0, step = 0;
        for (int i = 0; i < length - 1; i++) {
            maxPosition = Math.max(maxPosition, i + nums[i]);
            if (end == i) {
                end = maxPosition;
                step++;
            }
        }
        return step;
    }
复杂度分析:
  • 时间复杂度:O(N),需要遍历数组长度
  • 空间复杂度:O(1),只需要常数空间
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目要求 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的...
    Jimhou阅读 674评论 0 0
  • 题目 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断...
    _涼城阅读 194评论 0 1
  • 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断...
    李伟13阅读 114评论 0 0
  • 关注公众号《长歌大腿》,发送“机器学习”关键字,可获取包含机器学习(包含深度学习),统计概率,优化算法等系列文本与...
    伊凡vnir阅读 599评论 0 0
  • LeetCode题目链接链接 https://leetcode-cn.com/problems/jump-game...
    Mastergad阅读 740评论 0 0