LeetCode
一些LeetCode题目的解题
这次一定行
这个作者很懒,什么都没留下…
展开
-
1302.层数最深叶子节点的和
给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 。原创 2022-08-17 20:47:02 · 272 阅读 · 1 评论 -
1656.设计有序流
如果流存储有 id = ptr 的 (id, value) 对,则找出从 id = ptr 开始的 最长 id 连续递增序列 ,并 按顺序 返回与这些 id 关联的值的列表。有 n 个 (id, value) 对,其中 id 是 1 到 n 之间的一个整数,value 是一个字符串。// 插入 (2, "bbbbb"),返回 ["bbbbb", "ccccc"]// 插入 (4, "ddddd"),返回 ["ddddd", "eeeee"]// 插入 (1, "aaaaa"),返回 ["aaaaa"]...原创 2022-08-16 20:48:06 · 249 阅读 · 0 评论 -
641.设计循环双端队列
/ 返回 true。// 返回 true。// 返回 true。// 返回 true。// 返回 true。// 返回 true。boolean isEmpty() :若双端队列为空,则返回 true ,否则返回 false。链接:https://leetcode.cn/problems/design-circular-deque。boolean isFull() :若双端队列满了,则返回 true ,否则返回 false。int getFront() ):从双端队列头部获得一个元素。...原创 2022-08-15 20:10:15 · 225 阅读 · 0 评论 -
1282.用户分组
第二组是 [0,1,2],大小为 3,groupSizes[0] = groupSizes[1] = groupSizes[2] = 3。第三组是 [3,4,6],大小为 3,groupSizes[3] = groupSizes[4] = groupSizes[6] = 3。其他可能的解决方案有 [[2,1,6],[5],[0,4,3]] 和 [[5],[0,6,2],[4,3,1]]。输出:[[5],[0,1,2],[3,4,6]]输出:[[1],[0,5],[2,3,4]]...原创 2022-08-12 18:00:15 · 186 阅读 · 0 评论 -
1417.重新格式化字符串
解释:"0a1b2c" 中任意两个相邻字符的类型都不同。"a0b1c2", "0a1b2c", "0c2a1b" 也是满足题目要求的答案。解释:"1229857369" 中只有数字,所以无法满足重新格式化的条件。解释:"leetcode" 中只有字母,所以无法满足重新格式化的条件。输入:s = "1229857369"输入:s = "covid2019"输入:s = "leetcode"输入:s = "a0b1c2"输出:"c2o0v1i9d"输入:s = "ab123"输出:"0a1b2c"...原创 2022-08-11 22:02:16 · 87 阅读 · 0 评论 -
623.在二叉树中增加一行
题目描述给定一个二叉树的根 root 和两个整数 val 和 depth ,在给定的深度 depth 处添加一个值为 val 的节点行。注意,根节点 root 位于深度 1 。加法规则如下: 给定整数 depth,对于深度为 depth - 1 的每个非空树节点 cur ,创建两个值为 val 的树节点作为 cur 的左子树根和右子树根。 cur 原来的左子树应该是新的左子树根的左子树。 cur 原来的右子树应该是新的右子树根的右子树。 如果 depth == 1 意味着 de原创 2022-08-05 20:01:57 · 94 阅读 · 0 评论 -
622.设计循环队列
在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。链接:https://leetcode.cn/problems/design-circular-queue。enQueue(value): 向循环队列插入一个元素。// 返回 false,队列已满。deQueue(): 从循环队列中删除一个元素。// 返回 true。// 返回 true。// 返回 true。// 返回 true。isEmpty(): 检查循环队列是否为空。isFull(): 检查循环队列是否已满。...原创 2022-08-02 20:55:01 · 115 阅读 · 0 评论 -
814.二叉树剪枝
给你二叉树的根结点root,此外树的每个结点的值要么是0,要么是1。节点node的子树为node本身加上所有node的后代。输入root=[1,1,0,1,1,0,1,0]输入root=[1,0,1,0,0,0,1]树中节点的数目在范围[1,200]内。输入root=[1,null,0,0,1]返回移除了所有不包含1的子树的原二叉树。输出[1,1,0,1,1,null,1]输出[1,null,0,null,1]输出[1,null,1,null,1]......原创 2022-07-21 19:06:28 · 96 阅读 · 0 评论 -
1260.二维网格迁移
输入grid=[[3,8,1,9],[19,7,2,5],[4,6,11,10],[12,0,21,13]],k=4。输出[[12,0,21,13],[3,8,1,9],[19,7,2,5],[4,6,11,10]]输入grid=[[1,2,3],[4,5,6],[7,8,9]],k=1。输入grid=[[1,2,3],[4,5,6],[7,8,9]],k=9。输出[[9,1,2],[3,4,5],[6,7,8]]请你返回k次迁移操作后最终得到的二维网格。...原创 2022-07-20 19:14:37 · 87 阅读 · 0 评论 -
731.我的日程安排表II
它意味着在start到end时间内增加一个日程安排,注意,这里的时间是半开区间,即[start,end),实数x的范围为,start原创 2022-07-19 18:20:58 · 105 阅读 · 0 评论 -
565.数组嵌套
因为数据不含有重复元素,也就是要寻找最大环。以此类推,不断添加直到。原创 2022-07-18 17:53:32 · 72 阅读 · 0 评论 -
522. 最长特殊序列 II
题目描述给定字符串列表 strs ,返回其中 最长的特殊序列 。如果最长特殊序列不存在,返回 -1 。特殊序列 定义如下:该序列为某字符串 独有的子序列(即不能是其他字符串的子序列)。 s 的 子序列可以通过删去字符串 s 中的某些字符实现。 例如,"abc" 是 "aebdc" 的子序列,因为您可以删除"aebdc"中的下划线字符来得到 "abc" 。"aebdc"的子序列还包括"aebdc"、 "aeb" 和 "" (空字符串)。示例 1:输入: strs = ["aba","cdc","eae"原创 2022-06-27 20:23:21 · 97 阅读 · 0 评论 -
532.数组中的k-diff数对
题目描述给你一个整数数组 nums 和一个整数 k,请你在数组中找出 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。k-diff 数对定义为一个整数对 (nums[i], nums[j]) ,并满足下述全部条件: 0原创 2022-06-16 20:42:31 · 256 阅读 · 0 评论 -
498.对角线遍历
题目描述给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。示例 1: 输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4,7,5,3,6,8,9]示例 2:输入:mat = [[1,2],[3,4]]输出:[1,2,3,4]提示: m == mat.length n == mat[i].length 1 ...原创 2022-06-14 20:49:18 · 105 阅读 · 0 评论 -
1051.高度检查器
题目描述学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。返回满足 heights[i] != expected[i] 的 下标数量 。示例:输入:heights = [1,1,4,2,1原创 2022-06-13 12:59:53 · 102 阅读 · 0 评论 -
1037.有效的回旋镖
题目描述给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,如果这些点构成一个 回旋镖 则返回 true 。回旋镖 定义为一组三个点,这些点 各不相同 且 不在一条直线上 。示例 1:输入:points = [[1,1],[2,3],[3,2]]输出:true示例 2:输入:points = [[1,1],[2,2],[3,3]]输出:false提示: points.length == 3 points[i].length == 2原创 2022-06-08 16:14:46 · 105 阅读 · 0 评论 -
875.爱吃香蕉的珂珂
题目描述珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 h 小时后回来。珂珂可以决定她吃香蕉的速度 k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 h 小时内吃掉所有香蕉的最小速度 k(k 为整数)。示例 1:输入:piles = [3,6,7,11], h = 8输出:4示例 2:原创 2022-06-08 16:13:02 · 81 阅读 · 0 评论 -
732.我的日程安排表III
题目描述当 k 个日程安排有一些时间上的交叉时(例如 k 个日程安排都在同一时间内),就会产生 k 次预订。给你一些日程安排 [start, end) ,请你在每个日程安排添加后,返回一个整数 k ,表示所有先前日程安排会产生的最大 k 次预订。实现一个 MyCalendarThree 类来存放你的日程安排,你可以一直添加新的日程安排。 MyCalendarThree() 初始化对象。 int book(int start, int end) 返回一个整数 k ,表示日历中存在的 k 次预订的原创 2022-06-06 19:49:33 · 115 阅读 · 0 评论 -
450.删除二叉搜索树中的节点
题目描述给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。示例 1:输入:root = [5,3,6,2,4,null,7], key = 3输出:[5,4,6,2,null,null,7]解释:给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。一个正确的答案是 [5原创 2022-06-02 18:30:56 · 67 阅读 · 0 评论 -
473.火柴拼正方形
题目描述你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。如果你能使这个正方形,则返回 true ,否则返回 false 。示例 1:输入: matchsticks = [1,1,2,2,2]输出: true解释: 能拼成一个边长为2的正方形,每边两根火柴。示例 2:输入: matchsticks = [3,3,3,3,4原创 2022-06-02 14:07:35 · 186 阅读 · 0 评论 -
面试题17.11.单词距离
题目描述有个内含单词的超大文本文件,给定任意两个不同的单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?示例:输入:words = ["I","am","a","student","from","a","university","in","a","city"], word1 = "a", word2 = "student"输出:1提示: words.length <= 100000来源:力...原创 2022-05-27 17:16:25 · 136 阅读 · 0 评论 -
467.环绕字符串中唯一的子字符串
题目描述把字符串 s 看作是 “abcdefghijklmnopqrstuvwxyz” 的无限环绕字符串,所以 s 看起来是这样的:"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd...." .现在给定另一个字符串 p 。返回 s 中 唯一 的 p 的 非空子串 的数量 。示例 1:输入: p = "a"输出: 1解释: 字符串 s 中只有一个"a"子字符。示例 2:输入: p = "cac"输出原创 2022-05-25 14:34:32 · 150 阅读 · 0 评论 -
965.单值二叉树
题目描述如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false提示: 给定树的节点数范围是 [1, 100]。 每个节点的值都是整数,范围为 [0, 99] 。来源:力扣(LeetCode)链接:https://leetcode.c...原创 2022-05-24 13:57:57 · 85 阅读 · 0 评论 -
436.寻找右区间
题目描述给你一个区间数组 intervals ,其中 intervals[i] = [starti, endi] ,且每个 starti 都 不同 。区间 i 的 右侧区间 可以记作区间 j ,并满足 startj >= endi ,且 startj 最小化 。返回一个由每个区间 i 的 右侧区间 的最小起始位置组成的数组。如果某个区间 i 不存在对应的 右侧区间 ,则下标 i 处的值设为 -1 。示例 1:输入:intervals = [[1,2]]输出:[-1]解释:集.原创 2022-05-20 15:31:47 · 109 阅读 · 0 评论 -
462.最少移动次数使数组元素相等II
题目描述给你一个长度为 n 的整数数组 nums ,返回使所有数组元素相等需要的最少移动数。在一步操作中,你可以使数组中的一个元素加 1 或者减 1 。示例 1:输入:nums = [1,2,3]输出:2解释:只需要两步操作(每步操作指南使一个元素加 1 或减 1):[1,2,3] => [2,2,3] => [2,2,2]示例 2:输入:nums = [1,10,2,9]输出:16提示:n == nums.length 1 &原创 2022-05-19 15:32:26 · 146 阅读 · 0 评论 -
953.验证外星语词典
题目描述某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。示例 1:输入:words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"输出:true解释:在该语言的字母表中,'h' 位于 'l' 之前原创 2022-05-17 16:19:45 · 112 阅读 · 0 评论 -
面试题04.06.后继者
题目描述设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:输入: root = [2,1,3], p = 1 2/ \1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \ 3 6 / \ 2 4/ 1输出: null通过次数47,425提交次数...原创 2022-05-16 19:54:21 · 115 阅读 · 0 评论 -
面试题01.05.一次编辑
题目描述字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入:first = "pale"second = "ple"输出: True示例 2:输入:first = "pales"second = "pal"输出: False来源:力扣(LeetCode)链接:https://leetcode.cn/problems/one-away-lcci方法一:.原创 2022-05-13 15:37:02 · 76 阅读 · 0 评论 -
944.删列造序
题目描述给你由 n 个小写字母字符串组成的数组 strs,其中每个字符串长度相等。这些字符串可以每个一行,排成一个网格。例如,strs = ["abc", "bce", "cae"] 可以排列为:abcbcecae你需要找出并删除 不是按字典序升序排列的 列。在上面的例子(下标从 0 开始)中,列 0('a', 'b', 'c')和列 2('c', 'e', 'e')都是按升序排列的,而列 1('b', 'c', 'a')不是,所以要删除列 1 。返回你需要删除的列数。示例原创 2022-05-12 17:50:54 · 62 阅读 · 0 评论 -
942.增减字符串匹配
题目描述由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中: 如果 perm[i] < perm[i + 1] ,那么 s[i] == 'I' 如果 perm[i] > perm[i + 1] ,那么 s[i] == 'D'给定一个字符串 s ,重构排列 perm 并返回它。如果有多个有效排列perm,则返回其中 任何一个 。示例 1:输入:s = "IDID"输出:[0,4,1,3,2]示例 ...原创 2022-05-09 21:27:37 · 68 阅读 · 0 评论 -
933.最近的请求次数
题目描述写一个 RecentCounter 类来计算特定时间范围内最近的请求。请你实现 RecentCounter 类: RecentCounter() 初始化计数器,请求数为 0 。 int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证 每次对 ping 的调用都使用比之前更大的 t 值。示例 1:...原创 2022-05-06 15:28:09 · 135 阅读 · 0 评论 -
713.乘积小于K的子数组
题目描述给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。示例 1:输入:nums = [10,5,2,6], k = 100输出:8解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。示例 2:输入:nums = [1,2,3], k = 0输出:0提示:原创 2022-05-05 20:08:05 · 66 阅读 · 0 评论 -
1823.找出游戏的获胜者
题目描述共有 n 名小伙伴一起做游戏。小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号。确切地说,从第 i 名小伙伴顺时针移动一位会到达第 (i+1) 名小伙伴的位置,其中 1 <= i < n ,从第 n 名小伙伴顺时针移动一位会回到第 1 名小伙伴的位置。游戏遵循如下规则: 从第 1 名小伙伴所在位置 开始 。 沿着顺时针方向数 k 名小伙伴,计数时需要 包含 起始时的那位小伙伴。逐个绕圈进行计数,一些小伙伴可能会被数过不止一次。 你数到的最后一名小伙...原创 2022-05-04 21:46:27 · 154 阅读 · 0 评论 -
1305.两棵二叉搜索树中的所有元素
题目描述给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.示例 1:输入:root1 = [2,1,4], root2 = [1,0,3]输出:[0,1,1,2,3,4]示例 2:输入:root1 = [1,null,8], root2 = [8,1]输出:[1,1,8,8]提示: 每棵树的节点数在 [0, 5000] 范围内 -105 <= Node.val...原创 2022-05-02 16:46:10 · 87 阅读 · 0 评论 -
427.建立四叉树
题目描述给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成。请你用四叉树表示该矩阵 grid 。你需要返回能表示矩阵的 四叉树 的根结点。注意,当 isLeaf 为 False 时,你可以把 True 或者 False 赋值给节点,两种值都会被判题机制 接受 。四叉树数据结构中,每个内部节点只有四个子节点。此外,每个节点都有两个属性: val:储存叶子结点所代表的区域的值。1 对应 True,0 对应 False; isLeaf: 当这个节点是一个叶子结点...原创 2022-04-29 22:36:47 · 128 阅读 · 0 评论 -
905.按奇偶排序数组
题目描述给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。返回满足此条件的 任一数组 作为答案。示例 1:输入:nums = [3,1,2,4]输出:[2,4,3,1]解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。示例 2:输入:nums = [0]输出:[0]提示: 1 <= nums.length <= 5000 0 <= nums[i]...原创 2022-04-28 15:24:12 · 109 阅读 · 0 评论 -
417.太平洋大西洋水流问题
题目描述有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格 高于海平面的高度 。岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋。返回 网格坐标原创 2022-04-27 18:05:00 · 225 阅读 · 0 评论 -
647.回文子串
题目描述给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:s = "abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:s = "aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"原创 2022-04-26 16:55:33 · 137 阅读 · 0 评论 -
5.最长回文子串
题目描述给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"提示: 1 <= s.length <= 1000 s 仅由数字和英文字母组成来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring...原创 2022-04-26 16:31:08 · 72 阅读 · 0 评论 -
883.三维形体投影面积
题目描述在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。现在,我们查看这些立方体在 xy 、yz 和 zx 平面上的投影。投影 就像影子,将 三维 形体映射到一个 二维 平面上。从顶部、前面和侧面看立方体时,我们会看到“影子”。返回 所有三个投影的总面积 。示例 1:输入:[[1,2],[3,4]]输出:17解释:这.原创 2022-04-26 14:17:51 · 74 阅读 · 0 评论