LeetCode题解
文章平均质量分 57
尽量更新
baodream
这个作者很懒,什么都没留下…
展开
-
LeetCode65-有效数字
LeetCode65-有效数字Leetcode / 力扣65. 有效数字:有效数字(按顺序)可以分成以下几个部分:一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数小数(按顺序)可以分成以下几个部分:(可选)一个符号字符(’+’ 或 ‘-’)下述格式之一:- 至少一位数字,后面跟着一个点 ‘.’- 至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字- 一个点 ‘.’ ,后面跟着至少一位数字整数(按顺序)可以分成以下几个部分:原创 2022-03-18 12:37:36 · 371 阅读 · 0 评论 -
LeetCode50-Pow
LeetCode50-PowLeetcode / 力扣50. Pow(x, n):实现 pow(x, n),即计算 x 的 n 次幂函数(即,x^n )。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25提示:-100.0 < x &原创 2022-03-15 11:01:24 · 381 阅读 · 0 评论 -
LeetCode49-字母异位词分组
LeetCode49-字母异位词分组Leetcode / 力扣49. 字母异位词分组:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。示例 1:输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["nat","tan"],["ate","eat","tea"]]示例 2:输入: st原创 2022-03-15 11:00:51 · 1093 阅读 · 0 评论 -
LeetCode48-旋转图像
LeetCode48-旋转图像Leetcode / 力扣48. 旋转图像:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10]原创 2022-03-15 10:57:58 · 195 阅读 · 0 评论 -
LeetCode47-全排列2
LeetCode47-全排列2Leetcode / 力扣47. 全排列 II:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]提示:1 <= nums.length <= 8-原创 2022-03-15 10:56:59 · 1269 阅读 · 0 评论 -
LeetCode46-全排列
LeetCode46-全排列Leetcode / 力扣46. 全排列:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <= nums原创 2022-03-15 10:55:32 · 94 阅读 · 0 评论 -
LeetCode45-跳跃游戏2
LeetCode45-跳跃游戏2Leetcode / 力扣45. 跳跃游戏 II:给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 原创 2022-03-15 10:54:29 · 144 阅读 · 0 评论 -
LeetCode44-通配符匹配
LeetCode44-通配符匹配Leetcode / 力扣44. 通配符匹配:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释原创 2022-03-15 10:53:26 · 192 阅读 · 0 评论 -
LeetCode43-字符串相乘
LeetCode43-字符串相乘Leetcode / 力扣43. 字符串相乘:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。注意: 不能使用任何内置的 BigInteger 库或直接将输入转换为整数。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 =原创 2022-03-15 10:52:22 · 376 阅读 · 0 评论 -
LeetCode42-接雨水
LeetCode42-接雨水Leetcode / 力扣42. 接雨水:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2:输入:height = [4,2,0,3,2,5]输出:9提示原创 2022-03-15 10:50:44 · 1152 阅读 · 0 评论 -
LeetCode41-缺失的第一个正数
LeetCode41-缺失的第一个正数Leetcode / 力扣41. 缺失的第一个正数:给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1提示:1 <= nums.length <= 5原创 2022-03-15 10:49:12 · 549 阅读 · 0 评论 -
LeetCode40-组合总和2
LeetCode40-组合总和2Leetcode / 力扣40. 组合总和 II:给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意: 解集不能包含重复的组合。示例 1:输入: candidates = [原创 2022-03-07 20:49:15 · 182 阅读 · 0 评论 -
LeetCode39-组合总和
LeetCode39-组合总和Leetcode / 力扣39. 组合总和:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的原创 2022-03-07 20:48:37 · 213 阅读 · 0 评论 -
LeetCode38-外观数列
LeetCode38-外观数列Leetcode / 力扣38. 外观数列:给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 121原创 2022-03-07 20:45:56 · 257 阅读 · 0 评论 -
LeetCode37-解数独
LeetCode37-解数独Leetcode / 力扣37. 解数独:编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:board = [["5","3",".",".","7",".",".",".","."],["6",".",".","原创 2022-03-07 20:43:02 · 396 阅读 · 0 评论 -
LeetCode36-有效的数独
LeetCode36-有效的数独Leetcode / 力扣36. 有效的数独:请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规原创 2022-03-07 20:40:47 · 316 阅读 · 0 评论 -
LeetCode34-在排序数组中查找元素的第一个和最后一个位置
LeetCode34-在排序数组中查找元素的第一个和最后一个位置Leetcode / 力扣34. 在排序数组中查找元素的第一个和最后一个位置:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], targ原创 2022-03-07 20:37:43 · 274 阅读 · 0 评论 -
LeetCode33-搜索旋转排序数组
LeetCode33-搜索旋转排序数组Leetcode / 力扣33. 搜索旋转排序数组:整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋原创 2022-03-07 20:37:04 · 77 阅读 · 0 评论 -
LeetCode32-最长有效括号
LeetCode32-最长有效括号Leetcode / 力扣32. 最长有效括号:给你一个只包含'('和 ')'的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"示例 3:输入:s = ""输出:0提示:0 <= s.length <= 3 * 10^4s[i] 为 ‘(’ 或 ‘)原创 2022-03-07 20:33:07 · 717 阅读 · 0 评论 -
LeetCode31-下一个排列
LeetCode31-下一个排列Leetcode / 力扣31. 下一个排列:实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,原创 2022-03-07 20:30:52 · 104 阅读 · 0 评论 -
LeetCode30-串联所有单词的子串
LeetCode30-串联所有单词的子串Leetcode / 力扣30. 串联所有单词的子串:给定一个字符串 s 和一些 长度相同 的单词 words 。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符 ,但不需要考虑 words 中单词串联的顺序。示例 1:输入:s = "barfoothefoobarman", words = ["f原创 2021-10-28 13:10:08 · 234 阅读 · 0 评论 -
LeetCode29-两数相除
LeetCode29-两数相除Leetcode / 力扣29. 两数相除:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入:原创 2021-10-28 13:09:43 · 259 阅读 · 0 评论 -
LeetCode28-实现strstr
LeetCode28-实现strstrLeetcode / 力扣28. 实现 strStr():实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr()原创 2021-10-28 13:08:48 · 109 阅读 · 0 评论 -
LeetCode27-移除元素
LeetCode27-移除元素Leetcode / 力扣27. 移除元素:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对原创 2021-10-28 13:07:35 · 119 阅读 · 0 评论 -
LeetCode26-删除有序数组中的重复项
LeetCode26-删除有序数组中的重复项Leetcode / 力扣26. 删除有序数组中的重复项:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是原创 2021-10-28 13:05:30 · 82 阅读 · 0 评论 -
LeetCode25-K个一组翻转链表
LeetCode25-K个一组翻转链表Leetcode / 力扣25. K 个一组翻转链表:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]原创 2021-10-28 13:04:53 · 108 阅读 · 0 评论 -
LeetCode24-两两交换链表中的节点
LeetCode24-两两交换链表中的节点Leetcode / 力扣24. 两两交换链表中的节点:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val原创 2021-10-28 13:03:32 · 191 阅读 · 0 评论 -
LeetCode23-合并K个升序链表
LeetCode23-合并K个升序链表Leetcode / 力扣23. 合并K个升序链表:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->原创 2021-10-28 13:02:27 · 107 阅读 · 0 评论 -
LeetCode21-合并两个有序链表
LeetCode21-合并两个有序链表Leetcode / 力扣21. 合并两个有序链表:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 &l原创 2021-10-27 20:17:15 · 111 阅读 · 0 评论 -
LeetCode20-有效的括号
LeetCode20-有效的括号Leetcode / 力扣20. 有效的括号:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:fa原创 2021-10-27 20:16:02 · 275 阅读 · 0 评论 -
LeetCode19-删除链表的倒数第N个结点
LeetCode19-删除链表的倒数第N个结点19. 删除链表的倒数第 N 个结点:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 3原创 2021-10-27 20:15:17 · 116 阅读 · 0 评论 -
LeetCode18-四数之和
LeetCode18-四数之和Leetcode / 力扣18. 四数之和:给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] :0 <= a, b, c, d < na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序原创 2021-10-27 20:14:37 · 128 阅读 · 0 评论 -
LeetCode17-电话号码的字母组合
LeetCode17-电话号码的字母组合Leetcode / 力扣17. 电话号码的字母组合:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits =原创 2021-10-27 20:12:09 · 117 阅读 · 0 评论 -
LeetCode16-最接近的三数之和
LeetCode16-最接近的三数之和Leetcode / 力扣16. 最接近的三数之和:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例 1:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 +原创 2021-10-27 20:10:14 · 148 阅读 · 0 评论 -
LeetCode15-三数之和
LeetCode15-三数之和Leetcode / 力扣15. 三数之和:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意: 答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:原创 2021-10-27 20:06:24 · 215 阅读 · 0 评论 -
LeetCode14-最长公共前缀
LeetCode14-最长公共前缀Leetcode / 力扣14. 最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。提示:1 <= strs.length <= 2000 <= strs[i].原创 2021-10-27 20:05:45 · 202 阅读 · 0 评论 -
LeetCode13-罗马数字转整数
LeetCode13-罗马数字转整数Leetcode / 力扣13. 罗马数字转整数:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。原创 2021-10-27 20:04:26 · 135 阅读 · 0 评论 -
LeetCode12-整数转罗马数字
LeetCode12-整数转罗马数字Leetcode / 力扣6. Z 字形变换:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。原创 2021-10-27 20:03:40 · 100 阅读 · 0 评论 -
LeetCode11-盛最多水的容器
LeetCode11-盛最多水的容器Leetcode / 力扣11. 盛最多水的容器:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]原创 2021-09-23 12:49:16 · 251 阅读 · 0 评论 -
LeetCode72-编辑距离
LeetCode72-编辑距离Leetcode / 力扣72. 编辑距离:给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rors原创 2021-09-23 10:42:12 · 491 阅读 · 0 评论