首页 > 其他分享 >leet code 45 && 55 跳跃游戏

leet code 45 && 55 跳跃游戏

时间:2023-10-21 22:05:46浏览次数:47  
标签:index leet code 55 45 int 跳跃 前进

45. 跳跃游戏 II 55. 跳跃游戏

总结反思

首先去尝试完成了一下第 55 题,跳跃游戏。

没能独立解决问题,然后看过题解之后又重新去尝试独立完成第 45 题,跳跃游戏II。结果还是没搞定。

看了题解之后发现两道题目的解题思路大同小异.

但是作为我自己,在看过第 55 题的题解之后还是没能解决第 45 题,还是有问题的。

我觉得究其原因还是自己没能透彻理解的缘故。


55.跳跃游戏

本题是判断能否到达最后一个下标,对应的元素值是当前元素可以跳跃的最大长度。

首先想到了,可以到达的最大长度这个区间内的每一个位置都要去尝试去跳跃,然后分别判断是否能够到达最后一个位置

--这样实现起来无疑是巨复杂的
现在回顾思考
  • 假如我手持一个数字,数字代表了我最多可以前进距离。每前进一个单位我可以选择替换手中的数字。
  • 那么我肯定要走到我能够拿到最大数字的位置,然后下一次我还是依旧要这样选择
  • 这样才能够保证我走的最远

回到题目

  • 观察示例一

leet code 45 && 55 跳跃游戏_Math

  • 开始的时候从 索引(index) = 0 开始前进,那么好,最多可以前进到index = 2的位置因为 index = 2最多前进两步
  • 很显然 前进到 index = 1 的时候可以再前进 3 步,能够走的更远

show code

class Solution {
    public boolean canJump(int[] nums) {
      int n = nums.length;
      int dis = 0;
      for(int i = 0;i < n;i++) {
        // 为什么要有  i <= dis 这个判断?
        // dis 表示了在一次 移动范围内,能够到达的最远位置
        // 然后需要在这个范围内去判断,是否能够走的更远。
        if(i <= dis) {
          dis = Math.max(dis, nums[i] + i);
        }
        if(dis >= n - 1) {
          return true;
        }
      }
      return false;
    }
}

45.跳跃游戏II

难度略微提升,需要求得最少跳几次才能跳到终点(测试用例可达终点)

回顾思考

  • index = 0开始前进,索引所对应的值是可以前进的最大步数.
  • 那么为了尽快到达目的地,肯定每一次走的步子要最大

show code

class Solution {
    public int jump(int[] nums) {
        int n = nums.length;
        // 所需要用的步数.
        int step = 0;
        // 每一次最远能够到达的距离.
        int r = 0;

        int end = 0;

        // 最后一个元素不遍历
        // 为什么?假如通过两步刚刚好到达 n - 1,会多统计一步
        for(int i = 0;i < n - 1;i++) {
            r = Math.max(r, i + nums[i]);
            if(i == end) {
                end = r;
                step++;
            }
        }

        return step;
    }
}

标签:index,leet,code,55,45,int,跳跃,前进
From: https://blog.51cto.com/u_16079703/7969646

相关文章

  • Codeforces Round 855 (Div. 3) C. Powering the Hero
    有\(n\)张卡的卡堆,你可以自顶向下抽卡。装备卡显示数值为\(a_i(a_i>0)\),英雄卡显示数值为\(a_i=0\)。如果是装备卡,你可以将卡抽出放在装备堆。如果是英雄卡,你可以将装备堆顶端的一张数值为\(x\)的装备卡装备给英雄,英雄数值\(+x\)。无论是否装备,都加入英雄堆。询问......
  • Codeforces Round 857 (Div. 2) B. Settlement of Guinea Pigs
    你非常喜欢豚鼠。每个笼子可以住两只豚鼠,且你不想把每个笼子放入不同性别的豚鼠。豚鼠只有两种性别。假设你买到豚鼠时并不知道性别,只有医生能够分辨。接下来的\(n\)天方案中,若第\(i\)天为\(1\),你买入一只豚鼠;若为\(2\),你请医生分辨你的豚鼠性别。给出方案,你最少需要准......
  • Educational Codeforces Round 145 (Rated for Div. 2) B. Points on Plane
    给一个二维平面,你需要在上面放\(n\)个芯片。将一个芯片放在\((x,y)\)的代价为\(|x|+|y|\)。放\(n\)个代价的代价为,所有芯片中耗费的最大代价。并且你需要保证任意两个芯片之间的距离严格\(>1\)。现在给出\(n\)给芯片,询问放\(n\)个芯片的最小代价。一:不难想到......
  • VSCode配置Clang C/C++开发环境 [+clangd代码静态检查配置]
    问题:gcc/g++是c/c++使用最广泛的编译器,也是linux默认自带的编译套件,但在vscode上,也可通过微软官方提供的C/C++插件很便捷进行c/c++代码编译调试,但是该插件的自动补全和代码提示等功能很差,经常给不出合理的候选项。另外一套C/C++代码编译套件是基于LLVM的clang/clang++编译器、ll......
  • Leetcode原题 -- 螺旋矩阵相关
    第一题:54. 螺旋矩阵题目描述:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]解题思路:按层遍历,如图所示,找到规律后就差不多了publicList<Integer>spiral......
  • 6.使用leetcode去练习语言
    目录1本章预览2简单题举例2.1题目描述2.2题目解析2.3题解2.4涉及基础语法3中等题举例3.1题目描述3.2题目解析3.3题解3.4涉及基础语法4本章小结1本章预览事实上本章并不会去讲述go语言的基础情况,而是去介绍如何使用Leetcode去帮助我们去学习go语言的基本语法,当然本......
  • vscode 配置 ssh登录
    先在本地windows环境下安装好ssh,然后用ssh-keygen-trsa-C"[email protected]"生成密钥在服务器上也使用ssh-keygen-trsa-C"[email protected]"生成密钥将本地的公钥传递到服务器:scp.\[email protected]:~在.ssh文件夹创建authorized_keys:touch~/.ssh/aut......
  • Unexpected character '=' (code 61); expected a semi-colon after the reference fo
    在初始化hive时报错,出现如下问题:错误原因:hive-site.xml配置文件中,数据库的地址带有&符号。将数据库地址中的&符号调整为&amp;,详情如下:再次初始化hive,执行结果如下: ......
  • 算法训练day39LeetCode738.968.
    算法训练day39LeetCode738.968.738.单调递增的数字题目738.单调递增的数字-力扣(LeetCode)题解代码随想录(programmercarl.com)classSolution{public:intmonotoneIncreasingDigits(intn){stringstrNum=to_string(n);//int转换string......
  • thinkPHP5.0返回的接口返回 json数据,用了json_encode不生效,却返回的却是text/html格
    如何让返回的数据完全是json1、用SoapUI来测试借口,Content-Type不是json,而是text/html;2、自己的接口,最后的数据用了json_encode,也是不管用的;3、用header来设置Content-Type也没有效果;4、而改框架的配置default_return_type为json,这也是不可取的,整站是网站需要返回的还是te......