LeetCode
文章平均质量分 56
LeetCode算法题解
Hadoop全家桶
这个作者很懒,什么都没留下…
展开
-
2390. 从字符串中移除星号
isEmpty 方法用于判断栈是否为空,我们使用 List 的 isEmpty 方法来判断。移除星号 左侧 最近的那个 非星号 字符,并移除该星号自身。解释:整个字符串都会被移除,所以返回空字符串。生成的输入保证总是可以执行题面中描述的操作。给你一个包含若干星号 * 的字符串 s。输入:s = “leet**cod*e”e" 中的 ‘t’ ,s 变为 "lee。输入:s = “erase*****”返回移除 所有 星号之后的字符串。可以证明结果字符串是唯一的。选中 s 中的一个星号。时间复杂度:O(N)原创 2023-06-25 16:48:22 · 377 阅读 · 0 评论 -
2432. 处理用时最长的那个任务的员工
时间最长的任务是任务 0 和 1 ,处理这两个任务的员工的 id 分别是 0 和 1 ,所以返回最小的 0。返回处理用时最长的那个任务的员工的 id。注意,第 i 个任务在第 (i - 1) 个任务结束后立即开始,且第 0 个任务从时刻 0 开始。时间最长的任务是任务 3 ,而 id 为 1 的员工是处理此任务的员工,所以返回 1。时间最长的任务是任务 1 ,而 id 为 3 的员工是处理此任务的员工,所以返回 3。任务 0 于时刻 0 开始,且在时刻 1 结束,共计 1 个单位时间。原创 2023-05-05 17:06:35 · 133 阅读 · 0 评论 -
环形链表 II
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。原创 2023-01-13 08:40:07 · 94 阅读 · 0 评论 -
413. 等差数列划分
基本特点: 1)最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满组最优化原理。3)有重叠问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。分治法不同的是,适合于用动态规划求解的问题,经分解得到的子问题往往不是互相独立的。基本思想: 将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解(这部分与分治法相似)。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。原创 2023-01-04 18:14:21 · 127 阅读 · 0 评论 -
844. 比较含退格的字符串
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true。# 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。提示:s 和 t 只含有小写字母以及字符 ‘#’进阶:你可以用 O(n) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗?原创 2022-12-27 14:26:47 · 116 阅读 · 0 评论 -
面试题 01.05. 一次编辑
字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。例子:oneEditAway(“teacher”,“treacher”)原创 2022-12-13 15:29:21 · 187 阅读 · 0 评论 -
334. 递增的三元子序列
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true;解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6。进阶:你能实现时间复杂度为 O(n) ,空间复杂度为 O(1) 的解决方案吗?输入:nums = [2,1,5,0,4,6]输入:nums = [1,2,3,4,5]输入:nums = [5,4,3,2,1]原创 2022-08-23 11:14:56 · 80 阅读 · 0 评论 -
48. 旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。原创 2022-08-19 17:57:56 · 90 阅读 · 0 评论 -
3. 无重复字符的最长子串
空间复杂度:O(∣Σ∣),其中 Σ 表示字符集(即字符串中可以出现的字符∣Σ∣ 表示字符集的大小。时间复杂度:O(N),其中 N 是字符串的长度。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。...原创 2022-08-17 11:56:50 · 87 阅读 · 0 评论 -
15. 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?请你找出所有和为 0 且不重复的三元组。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]注意:答案中不可以包含重复的三元组。输入:nums = [0]输入:nums = []...原创 2022-08-08 23:22:04 · 86 阅读 · 0 评论 -
509. 斐波那契数
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列。斐波那契数的边界条件是 F(0)=0,F(1)=1。F(n) = F(n - 1) + F(n - 2),其中 n > 1。解释:F(2) = F(1) + F(0) = 1 + 0 = 1。解释:F(3) = F(2) + F(1) = 1 + 1 = 2。解释:F(4) = F(3) + F(2) = 2 + 1 = 3。给定 n ,请计算 F(n)。由于斐波那契数存在递推关系。时间复杂度:O(n)空间复杂度:O(1)...原创 2022-08-07 15:58:46 · 100 阅读 · 0 评论 -
100. 相同的树
如果两个二叉树都不为空,那么首先判断它们的节点(包括根节点)的值是否相同,若不相同则两个二叉树一定不同,若相同,再分别判断两个二叉树的左子树是否相同以及右子树是否相同。两个二叉树相同,当且仅当两个二叉树的结构完全相同,且所有对应节点的值相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。输入:p = [1,2], q = [1,null,2]输入:p = [1,2,3], q = [1,2,3]输入:p = [1,2,1], q = [1,1,2]方法一:深度优先搜索。...原创 2022-08-05 18:52:05 · 96 阅读 · 0 评论 -
925. 长按键入
偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。输入:name = “saeed”, typed = “ssaaedd”解释:‘e’ 一定需要被键入两次,但在 typed 的输出中不是这样。输入:name = “alex”, typed = “aaleex”时间复杂度:O(N+M),其中 M,N 分别为两个字符串的长度。解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。空间复杂度:O(1)。..原创 2022-08-04 17:35:17 · 63 阅读 · 0 评论 -
94.144.145 二叉树的前序遍历、中序遍历、后序遍历
二叉树的前序遍历:按照访问根节点——左子树——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候,我们按照同样的方式遍历,直到遍历完整棵树。二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候,我们按照同样的方式遍历,直到遍历完整棵树。二叉树的后序遍历:按照访问左子树——右子树——根节点的方式遍历这棵树,而在访问左子树或者右子树的时候,我们按照同样的方式遍历,直到遍历完整棵树。给你二叉树的根节点 root ,返回它节点值的 前序,中序,后续遍历。...原创 2022-08-03 16:54:56 · 98 阅读 · 0 评论 -
33. 搜索旋转排序数组
在传递给函数之前,nums 在预先未知的某个下标 k(0原创 2022-08-02 23:08:24 · 76 阅读 · 0 评论 -
633. 平方数之和
当a=b时,结束查找,此时如果仍然没有找到整数a和b满足a^2+b^2=c,则说明不存在题目要求的解,给定一个非负整数c,你要判断是否存在两个整数a和b,使得a^2+b^2=c。如果a^2+b^2=c,我们找到了题目要求的一个解,返回true;不失一般性,可以假设a...原创 2022-08-01 22:51:33 · 106 阅读 · 0 评论 -
73. 矩阵置零
请使用原地算法。输入matrix=[[0,1,2,0],[3,4,5,2],[1,3,1,5]]一个简单的改进方案是使用O(m+n)的额外空间,但这仍然不是最好的解决方案。一个直观的解决方案是使用O(mn)的额外空间,但这并不是一个好的解决方案。输入matrix=[[1,1,1],[1,0,1],[1,1,1]]输出[[0,0,0,0],[0,4,5,0],[0,3,1,0]]输出[[1,0,1],[0,0,0],[1,0,1]]你能想出一个仅使用常量空间的解决方案吗?...原创 2022-07-31 12:01:40 · 264 阅读 · 0 评论 -
1351. 统计有序矩阵中的负数
给你一个m*n的矩阵grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。请你统计并返回grid中负数的数目。输入grid=[[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]输入grid=[[3,2],[1,0]]解释矩阵中共有8个负数。...原创 2022-07-30 22:30:29 · 227 阅读 · 0 评论 -
242. 有效的字母异位词
注意若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。输入s=“anagram”,t=“nagaram”输入s=“rat”,t=“car”s和t仅包含小写字母。...原创 2022-07-29 22:10:35 · 63 阅读 · 0 评论 -
1539. 第 k 个缺失的正整数
由于数组是严格递增的,所以可以认为一个不缺失的数组是从1开始的nums=[1,2,3,4,…否则说明缺失正整数pivot,用一个变量count记录已经找到的缺失个数,count++,直到找到第k个缺失的正整数。若当前arr[i]==pivot,说明当前i位置之前都不缺元素,继续向后遍历i++,初始化基准pivot=1,并令i=1从头遍历数组arr。varpivot=1//当前应该出现的数。varcount=0//缺失个数。......原创 2022-07-28 15:22:57 · 105 阅读 · 0 评论 -
80. 删除有序数组中的重复项 II
解释函数应返回新长度length=7,并且原数组的前五个元素被修改为0,0,1,1,2,3,3。解释函数应返回新长度length=5,并且原数组的前五个元素被修改为1,1,2,2,3。时间复杂度O(n),其中n是数组的长度。输入nums=[0,0,1,1,1,1,2,3,3]输出7,nums=[0,0,1,1,2,3,3]空间复杂度O(1)。输出5,nums=[1,1,2,2,3]输入nums=[1,1,1,2,2,3]...原创 2022-07-27 17:08:51 · 72 阅读 · 0 评论 -
66. 加一
时间复杂度O(logx),即为二分查找需要的次数。空间复杂度O(1)。原创 2022-07-26 11:00:26 · 65 阅读 · 0 评论 -
367. 有效的完全平方数
36.有效的完全平方数折半查找最优时间复杂度O(logx),即为二分查找需要的次数。空间复杂度O(1)。原创 2022-07-25 11:20:21 · 159 阅读 · 0 评论 -
876. 链表的中间结点
考虑借助快慢双指针fast,slow,「快指针fast」每轮走2步,「慢指针slow」每轮走1步。ans.val=3,ans.next.val=4,ans.next.next.val=5,以及ans.next.next.next=NULL.链表长度为偶数当fast走到「null」时(越过「尾节点」后),slow正好走到「第二个中间节点」。链表长度为奇数当fast走到链表「尾节点」时,slow正好走到「中间节点」。输入[1,2,3,4,5,6]......原创 2022-07-24 18:42:54 · 77 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组
给你一个下标从1开始的整数数组numbers,该数组已按非递减顺序排列,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是numbers[index1]和numbers[index2],则1原创 2022-07-23 14:29:15 · 70 阅读 · 0 评论 -
189. 轮转数组
输入nums=[1,2,3,4,5,6,7],k=3。输入nums=[-1,-100,3,99],k=2。向右轮转1步[7,1,2,3,4,5,6]向右轮转2步[6,7,1,2,3,4,5]向右轮转3步[5,6,7,1,2,3,4]向右轮转1步[99,-1,-100,3]向右轮转2步[3,99,-1,-100]输出[5,6,7,1,2,3,4]输出[3,99,-1,-100]...原创 2022-07-22 15:06:48 · 91 阅读 · 0 评论 -
704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 nums 中的所有元素是不原创 2022-07-21 16:15:37 · 51 阅读 · 0 评论 -
6120-数组能形成多少数对
nums[0]和nums[3]形成一个数对,并从nums中移除,nums=[3,2,3,2,2]。nums[0]和nums[3]形成一个数对,并从nums中移除,nums=[3,2,3,2,2]。nums[0]和nums[2]形成一个数对,并从nums中移除,nums=[2,2,2]。nums[0]和nums[2]形成一个数对,并从nums中移除,nums=[2,2,2]。总共形成1个数对,nums中剩下0个数字。......原创 2022-07-18 10:44:29 · 181 阅读 · 0 评论