LeetCode
文章平均质量分 52
LeetCode
LouHerGetUp
欢迎大家学习交流
展开
-
【LeetCode】287. 寻找重复数
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。假设 nums 只有 一个重复的整数 ,返回 这个重复的数。输入:nums = [1,3,4,2,2]输入:nums = [3,1,3,4,2]输入:nums = [3,3,3,3,3]原创 2024-04-26 09:37:33 · 477 阅读 · 0 评论 -
【LeetCode】169. 多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:nums = [2,2,1,1,1,2,2]输入:nums = [3,2,3]原创 2024-04-26 09:37:20 · 318 阅读 · 0 评论 -
【LeetCode】136. 只出现一次的数字
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。输入:nums = [4,1,2,1,2]输入:nums = [2,2,1]输入:nums = [1]原创 2024-04-26 09:36:59 · 337 阅读 · 0 评论 -
【LeetCode】1143. 最长公共子序列
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。输入:text1 = “abcde”, text2 = “ace”输入:text1 = “abc”, text2 = “abc”解释:两个字符串没有公共子序列,返回 0。原创 2024-04-26 09:36:37 · 487 阅读 · 0 评论 -
【LeetCode】416. 分割等和子集
给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。解释:数组可以分割成 [1, 5, 5] 和 [11]。解释:数组不能分割成两个元素和相等的子集。输入:nums = [1,5,11,5]输入:nums = [1,2,3,5]原创 2024-04-26 09:36:23 · 266 阅读 · 0 评论 -
【LeetCode】152. 乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续。(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解释: 子数组 [2,3] 有最大乘积 6。输入: nums = [2,3,-2,4]输入: nums = [-2,0,-1]测试用例的答案是一个 32-位 整数。原创 2024-04-26 09:36:09 · 300 阅读 · 0 评论 -
【LeetCode】300. 最长递增子序列
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的。解释:最长递增子序列是 [2,3,7,101],因此长度为 4。给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。输入:nums = [10,9,2,5,3,7,101,18]输入:nums = [7,7,7,7,7,7,7]输入:nums = [0,1,0,3,2,3]原创 2024-04-26 09:35:57 · 387 阅读 · 0 评论 -
【LeetCode】139. 单词拆分
输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]解释: 返回 true 因为 “applepenapple” 可以由 “apple” “pen” “apple” 拼接成。输入: s = “applepenapple”, wordDict = [“apple”, “pen”]输入: s = “leetcode”, wordDict = [“leet”, “code”]注意,你可以重复使用字典中的单词。原创 2024-04-26 09:35:24 · 299 阅读 · 0 评论 -
【LeetCode】322. 零钱兑换
计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。输入:coins = [1, 2, 5], amount = 11。输入:coins = [2], amount = 3。输入:coins = [1], amount = 0。你可以认为每种硬币的数量是无限的。解释:11 = 5 + 5 + 1。原创 2024-04-26 09:35:10 · 265 阅读 · 0 评论 -
【LeetCode】279. 完全平方数
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。解释:12 = 4 + 4 + 4。解释:13 = 4 + 9。原创 2024-04-26 09:34:59 · 262 阅读 · 0 评论 -
【LeetCode】198. 打家劫舍
每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。输入:[2,7,9,3,1]输入:[1,2,3,1]原创 2024-04-26 09:34:18 · 354 阅读 · 0 评论 -
【LeetCode】118. 杨辉三角
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。输入: numRows = 5。输入: numRows = 1。原创 2024-04-25 09:48:35 · 436 阅读 · 0 评论 -
【LeetCode】763. 划分字母区间
像 “ababcbacadefegde”, “hijhklij” 这样的划分是错误的,因为划分的片段数较少。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。划分结果为 “ababcbaca”、“defegde”、“hijhklij”。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。输入:s = “ababcbacadefegdehijhklij”返回一个表示每个字符串片段的长度的列表。输入:s = “eccbbbbdec”输出:[9,7,8]原创 2024-04-25 09:46:55 · 350 阅读 · 0 评论 -
【LeetCode】121. 买卖股票的最佳时机
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;解释:在这种情况下, 没有交易完成, 所以最大利润为 0。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]原创 2024-04-25 09:44:49 · 430 阅读 · 0 评论 -
【LeetCode】347. 前 K 个高频元素
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。输入: nums = [1,1,1,2,2,3], k = 2。输入: nums = [1], k = 1。原创 2024-04-25 01:53:28 · 328 阅读 · 4 评论 -
【LeetCode】215. 数组中的第K个最大元素
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。输入: [3,2,3,1,2,4,5,5,6], k = 4。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。输入: [3,2,1,5,6,4], k = 2。原创 2024-04-25 01:48:59 · 324 阅读 · 0 评论 -
【LeetCode】739. 每日温度
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。输入: temperatures = [73,74,75,71,69,72,76,73]输入: temperatures = [30,40,50,60]输入: temperatures = [30,60,90]输出: [1,1,4,2,1,1,0,0]输出: [1,1,1,0]输出: [1,1,0]原创 2024-04-25 01:44:14 · 304 阅读 · 0 评论 -
【LeetCode】394. 字符串解码
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。输入:s = “2[abc]3[cd]ef”输入:s = “abc3[cd]xyz”输入:s = “3[a]2[bc]”输入:s = “3[a2[c]]”输出:“accaccacc”输出:“aaabcbc”原创 2024-04-25 01:42:23 · 294 阅读 · 0 评论 -
【LeetCode】155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。原创 2024-04-25 01:40:05 · 264 阅读 · 0 评论 -
【LeetCode】153. 寻找旋转排序数组中的最小值
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。解释:原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。解释:原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。输入:nums = [4,5,6,7,0,1,2]输入:nums = [11,13,15,17]输入:nums = [3,4,5,1,2]原创 2024-04-25 01:37:56 · 258 阅读 · 0 评论 -
【LeetCode】131. 分割回文串
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是。输出:[[“a”,“a”,“b”],[“aa”,“b”]]返回 s 所有可能的分割方案。输入:s = “aab”输入:s = “a”输出:[[“a”]]原创 2024-04-25 01:34:30 · 192 阅读 · 0 评论 -
【LeetCode】124. 二叉树中的最大路径和
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。该路径 至少包含一个 节点,且不一定经过根节点。解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6。输入:root = [-10,9,20,null,null,15,7]给你一个二叉树的根节点 root ,返回其 最大路径和。输入:root = [1,2,3]路径和 是路径中各节点值的总和。原创 2024-04-25 01:32:06 · 336 阅读 · 0 评论 -
【LeetCode】236. 二叉树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4。因为根据定义最近公共祖先节点可以为节点本身。输入:root = [1,2], p = 1, q = 2。原创 2024-04-25 01:22:12 · 326 阅读 · 0 评论 -
【LeetCode】437. 路径总和 III
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22。输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。原创 2024-04-25 01:13:10 · 181 阅读 · 0 评论 -
【LeetCode】105. 从前序与中序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输入: preorder = [-1], inorder = [-1]输出: [3,9,20,null,null,15,7]原创 2024-04-25 01:09:16 · 405 阅读 · 4 评论 -
【LeetCode】114. 二叉树展开为链表
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。输出:[1,null,2,null,3,null,4,null,5,null,6]输入:root = [1,2,5,3,4,null,6]展开后的单链表应该与二叉树 先序遍历 顺序相同。输入:root = [0]输入:root = []原创 2024-04-25 01:07:40 · 166 阅读 · 0 评论 -
【LeetCode】199. 二叉树的右视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入: [1,2,3,null,5,null,4]输入: [1,null,3]输出: [1,3,4]原创 2024-04-19 09:18:16 · 360 阅读 · 0 评论 -
【LeetCode】230. 二叉搜索树中第K小的元素
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。输入:root = [5,3,6,2,4,null,null,1], k = 3。输入:root = [3,1,4,null,2], k = 1。原创 2024-04-19 09:14:59 · 208 阅读 · 0 评论 -
【LeetCode】108. 将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵。解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]输入:nums = [1,3]原创 2024-04-19 09:11:44 · 185 阅读 · 0 评论 -
【LeetCode】102. 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]输入:root = [1]输入:root = []原创 2024-04-19 09:09:56 · 260 阅读 · 0 评论 -
【LeetCode】543. 二叉树的直径
二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。这条路径可能经过也可能不经过根节点 root。解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。给你一棵二叉树的根节点,返回该树的 直径。两节点之间路径的 长度 由它们之间边数表示。输入:root = [1,2,3,4,5]输入:root = [1,2]原创 2024-04-19 09:08:06 · 236 阅读 · 1 评论 -
【LeetCode】101. 对称二叉树
输入:root = [1,2,2,null,3,null,3]给你一个二叉树的根节点 root , 检查它是否轴对称。输入:root = [1,2,2,3,4,4,3]原创 2024-04-19 01:26:05 · 297 阅读 · 0 评论 -
【LeetCode】226. 翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]输入:root = [2,1,3]输入:root = []输出:[2,3,1]原创 2024-04-19 00:58:35 · 182 阅读 · 0 评论 -
【LeetCode】104. 二叉树的最大深度
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。输入:root = [3,9,20,null,null,15,7]给定一个二叉树 root ,返回其最大深度。输入:root = [1,null,2]原创 2024-04-19 00:56:30 · 210 阅读 · 1 评论 -
【LeetCode】146. LRU 缓存
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。原创 2024-04-19 00:49:50 · 246 阅读 · 0 评论 -
【LeetCode】148. 排序链表
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。输入:head = [-1,5,3,4,0]输入:head = [4,2,1,3]输出:[-1,0,3,4,5]输出:[1,2,3,4]输入:head = []原创 2024-04-19 00:47:44 · 220 阅读 · 0 评论 -
【LeetCode】138. 随机链表的复制
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y。原创 2024-04-16 23:14:27 · 402 阅读 · 0 评论 -
【LeetCode】142. 环形链表 II
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。输入:head = [3,2,0,-4], pos = 1。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。原创 2024-04-16 01:45:13 · 386 阅读 · 0 评论 -
【LeetCode】141. 环形链表
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。输入:head = [3,2,0,-4], pos = 1。给你一个链表的头节点 head ,判断链表中是否有环。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。输入:head = [1], pos = -1。解释:链表中没有环。原创 2024-04-16 01:42:02 · 304 阅读 · 0 评论 -
【LeetCode】234. 回文链表
回文链表(回文序列:回文 序列是向前和向后读都相同的序列。给你一个单链表的头节点 head ,请你判断该链表是否为。如果是,返回 true;否则,返回 false。输入:head = [1,2,2,1]输入:head = [1,2]原创 2024-04-16 01:36:23 · 234 阅读 · 0 评论