LeetCode高频题55. 跳跃游戏

LeetCode高频题55. 跳跃游戏

提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目
互联网大厂们在公司养了一大批ACM竞赛的大佬们,吃完饭就是设计考题,然后去考应聘人员,你要做的就是学基础树结构与算法,然后打通任督二脉,以应对波云诡谲的大厂笔试面试题!
你要是不扎实学习数据结构与算法,好好动手手撕代码,锻炼解题能力,你可能会在笔试面试过程中,连题目都看不懂!比如华为,字节啥的,足够让你读不懂题
在这里插入图片描述
本题!是互联网大厂考过的笔试原题,202204月的笔试,好像是京东还是字节考的,我忘了
本题!是互联网大厂考过的笔试原题,202204月的笔试,好像是京东还是字节考的,我忘了
本题!是互联网大厂考过的笔试原题,202204月的笔试,好像是京东还是字节考的,我忘了


文章目录

  • LeetCode高频题55. 跳跃游戏
    • @[TOC](文章目录)
  • 题目
  • 一、审题
  • 二、解题
  • 总结

题目

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标。


一、审题

示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。
示例 2:

输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/jump-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


二、解题

最大可以跳最大[i]个步数
怎么跳,随意

LeetCode高频题55. 跳跃游戏_第1张图片
可以随意选走几步

最后能不能跳到N-1位置呢???

来到每一个位置i,它能在当前跳到的最远位置是?
i+[i]就是每次i达到的max【能到i就要更新,看看当前这个右边界max更大,就更新】

注意:中途你发现i压根来不了这个max【i>max】,false
LeetCode高频题55. 跳跃游戏_第2张图片
当你来到i=4时,max=i+[i]=4+0=4
下一步你到i=5,发现i>max,说明你曾经压根没法跳到这里来,返回false

当i=N-1,就成功了!!!
说明中途一直没失败!!

手撕代码:

class Solution {
    public boolean canJump(int[] nums) {
        //复习:
        //来到每一个位置i,它能在当前跳到的最远位置是?
        //**i+[i]就是每次i达到的max【能到i就要更新】**
        //注意:中途你发现i压根来不了这个max【i>max】,false
            if (nums == null || nums.length < 2) return true;
            int N = nums.length;

            int max = 0;//来到i最远的右边界
            for (int i = 0; i < N; i++) {
                if (i > max) return false;
                max = Math.max(max, i + nums[i]);//更新当前位置能到的最远右边界
            }
            return true;
        }
}

测试:

    public static void test(){
        int[] arr = {2, 0, 0};
        Solution solution = new Solution();
        System.out.println(solution.canJump(arr));
        System.out.println(solution.canJumpReview(arr));
    }

    public static void main(String[] args) {
        test();
    }
true
true

LeetCode测试;
LeetCode高频题55. 跳跃游戏_第3张图片
LeetCode高频题55. 跳跃游戏_第4张图片
本题的关键就是看看从左往右跳跃的过程中,咱们怎么选跳跃的步数
实际上不管你咋选,我是洗完能跳得越远越好,之前你能来到i,我就有办法从i跳到更远,当你之前怎么也没法跳到i来
就是i>maxR了,那显然不好意思,我没法从i起跳,失败了!!!


总结

提示:重要经验:

1)本题的关键就是看看从左往右跳跃的过程中,咱们怎么选跳跃的步数
实际上不管你咋选,我是洗完能跳得越远越好,之前你能来到i,我就有办法从i跳到更远,当你之前怎么也没法跳到i来
就是i>maxR了,那显然不好意思,我没法从i起跳,失败了
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

你可能感兴趣的:(大厂面试高频题之数据结构与算法,leetcode,游戏,跳跃游戏,数组,能跳到最右吗)