LeetCode刷题笔记
文章平均质量分 51
1
冷冰殇
have a good day
展开
-
【中等】大餐计数
将deliciousness中每个美味程度出现的次数存储到map中。遍历该map,对于每个美味程度,计算与其匹配的美味程度(共22个)。如果该匹配项也在map中,再判断匹配项与源项是否一致,如果一致,按$\frac{n(n-1)}{2}$计算,如果不一致,按$n\times m$计算。其中$n$=map[源项],$m$=map[匹配项]。原创 2022-09-08 16:56:22 · 126 阅读 · 0 评论 -
【困难】乘法表中第k小的数
题目描述几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第k小的数字吗?给定高度m 、宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k 小的数字。例 1:输入: m = 3, n = 3, k = 5输出: 3解释: 乘法表:1 2 32 4 63 6 9第5小的数字是 3 (1, 2, 2, 3, 3).例 2:输入: m = 2, n = 3, k = 6输出: 6解释: 乘法表:1 2 32 4 6第6小的数字是 6 (1, 2, 2,原创 2022-05-18 14:32:36 · 229 阅读 · 0 评论 -
【中等】序列化和反序列化二叉搜索树
题目描述序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。编码的字符串应尽可能紧凑。示例 1:输入:root = [2,1,3]输出:[2,1,3]示例 2:输入:root = []输出:[]提示:树中节点数范原创 2022-05-11 23:15:08 · 180 阅读 · 0 评论 -
【困难】猫和老鼠
题目描述两位玩家分别扮演猫和老鼠,在一张 无向 图上进行游戏,两人轮流行动。图的形式是:graph[a] 是一个列表,由满足 ab 是图中的一条边的所有节点 b 组成。老鼠从节点 1 开始,第一个出发;猫从节点 2 开始,第二个出发。在节点 0 处有一个洞。在每个玩家的行动中,他们 必须 沿着图中与所在当前位置连通的一条边移动。例如,如果老鼠在节点 1 ,那么它必须移动到 graph[1] 中的任一节点。此外,猫无法移动到洞中(节点 0)。然后,游戏在出现以下三种情形之一时结束:如果猫和老鼠原创 2022-05-10 13:24:50 · 484 阅读 · 0 评论 -
【中等】数组中重复的数据
题目描述给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[2,3]示例 2:输入:nums = [1,1,2]输出:[1]示例 3:输入:nums = [1]输出:[]提示:n == nums.原创 2022-05-08 21:17:59 · 1099 阅读 · 0 评论 -
【困难】标签验证器
题目描述给定一个表示代码片段的字符串,你需要实现一个验证器来解析这段代码,并返回它是否合法。合法的代码片段需要遵守以下的所有规则:1.代码必须被合法的闭合标签包围。否则,代码是无效的。2.闭合标签(不一定合法)要严格符合格式:<TAG_NAME>TAG_CONTENT</TAG_NAME>。其中,<TAG_NAME>是起始标签,</TAG_NAME>是结束标签。起始和结束标签中的 TAG_NAME 应当相同。当且仅当 TAG_NAME 和 TAG_CON原创 2022-05-02 14:22:57 · 145 阅读 · 0 评论 -
【中等】建立四叉树——(分治)
题目描述给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成。请你用四叉树表示该矩阵 grid 。你需要返回能表示矩阵的 四叉树 的根结点。注意,当 isLeaf 为 False 时,你可以把 True 或者 False 赋值给节点,两种值都会被判题机制 接受 。四叉树数据结构中,每个内部节点只有四个子节点。此外,每个节点都有两个属性: val:储存叶子结点所代表的区域的值。1 对应 True,0 对应 False; isLeaf: 当这个节点是一个叶子结点时为 True,如原创 2022-04-29 15:03:49 · 573 阅读 · 0 评论 -
【中等】随机数索引
题目描述给你一个可能含有 重复元素 的整数数组 nums ,请你随机输出给定的目标数字 target 的索引。你可以假设给定的数字一定存在于数组中。实现 Solution 类:Solution(int[] nums) 用数组 nums 初始化对象。int pick(int target) 从 nums 中选出一个满足 nums[i] == target 的随机索引 i 。如果存在多个有效的索引,则每个索引的返回概率应当相等。示例:输入["Solution", "pick", "pick", "原创 2022-04-25 19:43:48 · 270 阅读 · 0 评论 -
【困难】安装栅栏
题目描述在一个二维的花园中,有一些用 (x, y) 坐标表示的树。由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树。只有当所有的树都被绳子包围时,花园才能围好栅栏。你需要找到正好位于栅栏边界上的树的坐标。解题思路这是计算几何学中经典的寻找凸包问题,可以使用Graham算法或Jarvis算法进行求解。但需要注意的是,经典的凸包并不包含凸组合(两点连线上的点称为这两点的凸组合),但此题中,需要输出凸组合,所以需要对这种边界问题考虑周全。Graham算法class Solution {原创 2022-04-24 00:47:08 · 152 阅读 · 0 评论 -
【中等】旋转函数
题目描述给定一个长度为 n 的整数数组 nums 。假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为:F(k) = 0 * arrk[0] + 1 * arrk[1] + … + (n - 1) * arrk[n - 1]返回 F(0), F(1), …, F(n-1)中的最大值 。生成的测试用例让答案符合 32 位 整数。示例 1:输入: nums = [4,3,2,6]输出: 26解释:F(0) = (0 * 4) + (1原创 2022-04-22 19:37:34 · 450 阅读 · 0 评论 -
【中等】文件的最长绝对路径
题目描述假设有一个同时存储文件和目录的文件系统。下图展示了文件系统的一个示例:这里将 dir 作为根目录中的唯一目录。dir 包含两个子目录 subdir1 和 subdir2 。subdir1 包含文件 file1.ext 和子目录 subsubdir1;subdir2 包含子目录 subsubdir2,该子目录下包含文件 file2.ext 。在文本格式中,如下所示(⟶表示制表符):dir⟶ subdir1⟶ ⟶ file1.ext⟶ ⟶ subsubdir1⟶ subdir2⟶ ⟶原创 2022-04-20 14:56:29 · 210 阅读 · 0 评论 -
【中等】寻找峰值
题目描述峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。示例 1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入:nums = [1,2,1,3,5,6,4]输出:1 或 5 解释原创 2022-04-17 17:04:23 · 177 阅读 · 0 评论 -
【中等】寻找旋转排序数组中的最小值
题目描述已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。给你一个元素值 互不相同 的数组原创 2022-04-17 16:03:00 · 74 阅读 · 0 评论 -
【中等】迷你语法分析器
题目描述给定一个字符串 s 表示一个整数嵌套列表,实现一个解析它的语法分析器并返回解析的结果 NestedInteger 。列表中的每个元素只可能是整数或整数嵌套列表示例 1:输入:s = “324”,输出:324解释:你应该返回一个 NestedInteger 对象,其中只包含整数值 324。示例 2:输入:s = “[123,[456,[789]]]”,输出:[123,[456,[789]]]解释:返回一个 NestedInteger 对象包含一个有两个元素的嵌套列表:原创 2022-04-16 20:29:09 · 329 阅读 · 2 评论 -
【困难】最大回文数乘积
题目描述给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。示例 1:输入:n = 2输出:987解释:99 x 91 = 9009, 9009 % 1337 = 987示例 2:输入: n = 1输出: 9提示:1 <= n <= 8解题思路首先说一下我自己的思路(很蠢的思路。。。最后居然超时了)这个题我一开始就剑走偏锋了,因为我觉得java中的常见类型显然无法保存16位的数(最大的回文数)原创 2022-04-16 18:48:22 · 597 阅读 · 0 评论 -
【中等】O(1)时间插入、删除和获取随机元素
题目描述实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true ;否则,返回 false 。int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。每个元素应该有原创 2022-04-13 13:38:43 · 97 阅读 · 0 评论 -
【中等】统计各位数字都不同的数字个数
题目描述给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0<=x<10n0 <= x < 10^n0<=x<10n 。示例 1:输入:n = 2输出:91解释:答案应为除去 11、22、33、44、55、66、77、88、99 外, 在 0 ≤ x < 100 范围内的所有数字。 示例 2:输入:n = 0输出:1提示:0 <= n <= 8解题思路n为0时,只有0一个数字,返回1;n不为0时,首位有9原创 2022-04-11 11:16:11 · 418 阅读 · 0 评论 -
【中等】最小高度树
题目描述树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。给你一棵包含 n 个节点的树,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点 x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,具有最小高度的树(即,min(h))被称为 最原创 2022-04-10 12:19:35 · 239 阅读 · 0 评论 -
【简单】旋转字符串
题目描述给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。s 的 旋转操作 就是将 s 最左边的字符移动到最右边。例如, 若 s = ‘abcde’,在旋转一次之后结果就是’bcdea’ 。示例 1:输入: s = "abcde", goal = "cdeab"输出: true示例 2:输入: s = "abcde", goal = "abced"输出: false提示:1 <= s.length, goal.leng原创 2022-04-10 08:57:20 · 518 阅读 · 0 评论 -
【简单】唯一摩尔斯密码词
题目描述国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:‘a’ 对应 “.-” ,‘b’ 对应 “-…” ,‘c’ 对应 “-.-.” ,以此类推。为了方便,所有 26 个英文字母的摩尔斯密码表如下:[“.-”,“-…”,“-.-.”,“-…”,“.”,“…-.”,“–.”,“…”,“…”,“.—”,“-.-”,“.-…”,“–”,“-.”,“—”,“.–.”,“–.-”,“.-.”,“…”,“-”,“…-”,“…-”,“.–”,“-…-”,“-.–原创 2022-04-10 08:24:24 · 4855 阅读 · 0 评论 -
【简单】两个列表的最小索引总和
题目描述假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。示例 1:输入: list1 = ["Shogun", "Tapioca Express", "Burger King", "KFC"],list2 = ["Piatti", "The Grill at Torrey Pines", "Hungr原创 2022-04-09 18:57:07 · 145 阅读 · 0 评论 -
【困难】到达终点
题目描述给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。示例 1:输入: sx = 1, sy = 1, tx = 3, ty = 5输出: true解释:可以通过以下一系列转换从起点转换到终点:(1, 1) -> (1, 2)(1, 2) -> (3, 2)(3, 2) ->原创 2022-04-09 12:06:03 · 240 阅读 · 0 评论 -
【中等】N叉树的层序遍历
题目描述给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]示例2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:[[1]原创 2022-04-08 17:47:36 · 355 阅读 · 0 评论 -
【简单】打折购买糖果的最小开销
题目描述一家商店正在打折销售糖果。每购买 两个 糖果,商店会 免费 送一个糖果。免费送的糖果唯一的限制是:它的价格需要小于等于购买的两个糖果价格的 较小值 。比方说,总共有 4 个糖果,价格分别为 1 ,2 ,3 和 4 ,一位顾客买了价格为 2 和 3 的糖果,那么他可以免费获得价格为 1 的糖果,但不能获得价格为 4 的糖果。给你一个下标从 0 开始的整数数组 cost ,其中 cost[i] 表示第 i 个糖果的价格,请你返回获得 所有 糖果的 最小 总开销。示例 1:输入:cost =原创 2022-04-08 00:29:22 · 291 阅读 · 0 评论 -
【简单】罗马数字转整数
题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II原创 2022-04-07 19:54:39 · 347 阅读 · 0 评论 -
【中等】两数相加
题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.解题思路从最低位开始相加,定义一个全局变量保存进位。整体难度偏向简单。/** * Definition for singly-link原创 2022-04-07 19:38:59 · 78 阅读 · 0 评论