LeetCode-HOT100
LeetCode-HOT100
专注如一
........
展开
-
Leetcode HOT 100 - 3. 无重复字符的最长子串(Java + 滑动窗口)
【代码】Leetcode HOT 100 - 3. 无重复字符的最长子串(Java + 滑动窗口)原创 2024-01-31 10:10:52 · 352 阅读 · 0 评论 -
Leetcode HOT 100 - 2. 两数相加(Java + 链表)
【代码】Leetcode HOT 100 - 2. 两数相加(Java + 链表)原创 2024-01-25 10:59:28 · 440 阅读 · 0 评论 -
Leetcode 647. 回文子串
Leetcode 647. 回文子串题目给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。1原创 2023-07-01 00:50:56 · 149 阅读 · 0 评论 -
Leetcode 394. 字符串解码
Leetcode 394. 字符串解码题目给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。1原创 2023-06-28 23:33:05 · 341 阅读 · 0 评论 -
Leetcode 56. 合并区间(排序 + sort 方法的注意)
Leetcode 56. 合并区间(排序 + sort 方法的注意)题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。1原创 2023-06-22 00:52:17 · 775 阅读 · 0 评论 -
Leetcode 75. 颜色分类(三指针)
Leetcode 75. 颜色分类(三指针)题目给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。n == nums.length1原创 2023-06-20 22:08:22 · 767 阅读 · 2 评论 -
Leetcode 617. 合并二叉树
Leetcode 617. 合并二叉树题目给你两棵二叉树: root1 和 root2 。给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null的节点将直接作为新二叉树的节点。原创 2023-06-17 15:29:07 · 91 阅读 · 0 评论 -
Leetcode 128. 最长连续序列(哈希 + 带权并查集)
Leetcode 128. 最长连续序列(哈希 + 带权并查集)题目给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。0原创 2023-06-16 02:14:13 · 87 阅读 · 0 评论 -
Leetcode 128. 最长连续序列(哈希 + 优化)
Leetcode 128. 最长连续序列(哈希 + 优化)题目给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。0原创 2023-06-14 18:02:06 · 1005 阅读 · 0 评论 -
Leetcode 39. 组合总和(完全背包)
Leetcode 39. 组合总和题目给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。原创 2023-06-13 19:49:46 · 892 阅读 · 1 评论 -
Leetcode 416. 分割等和子集(01 背包)
Leetcode 416. 分割等和子集(01 背包)题目给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。1原创 2023-06-09 04:30:39 · 33 阅读 · 0 评论 -
Leetcode 53. 最大子数组和(经典动态规划问题 + 理解「无后效性」)
Leetcode 53. 最大子数组和(经典动态规划问题 + 理解「无后效性」)题目给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。1原创 2023-06-07 11:05:37 · 427 阅读 · 0 评论 -
Leetcode 152. 乘积最大子数组
Leetcode 152. 乘积最大子数组题目给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。子数组 是数组的连续子序列。1原创 2023-06-05 21:42:04 · 380 阅读 · 0 评论 -
Leetcode 301. 删除无效的括号(DFS + 剪枝)
Leetcode 301. 删除无效的括号(DFS + 剪枝)题目给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。1原创 2023-06-04 22:00:02 · 139 阅读 · 0 评论 -
Leetcode 312. 戳气球(记忆化搜索)
Leetcode 312. 戳气球(记忆化搜索)题目有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。求所能获得硬币的最大数量。n == nums.lengt原创 2023-06-04 05:07:19 · 289 阅读 · 0 评论 -
Leetcode 78. 子集
* Leetcode 78. 子集* 题目 * 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 * 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 * 1原创 2023-05-28 05:48:30 · 36 阅读 · 0 评论 -
Leetcode 221. 最大正方形
Leetcode 221. 最大正方形题目在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。m == matrix.lengthn == matrix[i].length1原创 2023-05-26 12:15:20 · 703 阅读 · 0 评论 -
Leetcode 337. 打家劫舍 III(树形DP)
Leetcode 337. 打家劫舍 III(树形DP)题目小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额 。树的节点数在 [1, 10^4] 范围内0原创 2023-05-25 11:43:47 · 112 阅读 · 0 评论 -
Leetcode 399. 除法求值
Leetcode 399. 除法求值题目给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = values[i] 。每个Ai 或 Bi 是一个表示单个变量的字符串。另有一些以数组 queries 表示的问题,其中 queries[j] = [Cj, Dj] 表示第 j 个问题,请你根据已知条件找出 Cj / Dj = ? 的结果作为答案。原创 2023-05-25 02:13:03 · 438 阅读 · 0 评论 -
Leetcode 62. 不同路径
Leetcode 62. 不同路径题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?1原创 2023-05-23 14:16:01 · 375 阅读 · 0 评论 -
Leetcode 739. 每日温度
Leetcode 739. 每日温度题目给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。1原创 2023-05-22 13:34:42 · 383 阅读 · 0 评论 -
Leetcode 538. 把二叉搜索树转换为累加树(Morris 遍历)
Leetcode 538. 把二叉搜索树转换为累加树(Morris 遍历)题目给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。树中的节点数介于 0 和 10^4 之间。每个节点的值介于 -10^4 和 10原创 2023-05-21 05:32:39 · 290 阅读 · 0 评论 -
Leetcode 538. 把二叉搜索树转换为累加树(递归)
Leetcode 538. 把二叉搜索树转换为累加树(递归)题目给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。树中的节点数介于 0 和 10^4 之间。每个节点的值介于 -10^4 和 10^4 之间。原创 2023-05-14 01:19:22 · 339 阅读 · 0 评论 -
Leetcode 322. 零钱兑换(完全背包)
Leetcode 322. 零钱兑换(完全背包)题目给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。1原创 2023-05-12 12:03:36 · 423 阅读 · 0 评论 -
Leetcode 55. 跳跃游戏
Leetcode 55. 跳跃游戏题目给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。1原创 2023-05-11 12:55:19 · 352 阅读 · 0 评论 -
Leetcode 32. 最长有效括号
Leetcode 32. 最长有效括号题目给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。0原创 2023-05-08 16:24:32 · 533 阅读 · 0 评论 -
Leetcode 300. 最长递增子序列
* Leetcode 300. 最长递增子序列* 题目: * 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 * 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 * 1原创 2023-05-07 17:33:10 · 373 阅读 · 0 评论 -
Leetcode 239. 滑动窗口最大值(单调队列解法)
Leetcode 239. 滑动窗口最大值(单调队列解法)* 题目: * 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 * 返回 滑动窗口中的最大值 。 * 1原创 2023-03-25 15:18:06 · 357 阅读 · 0 评论 -
Leetcode 239. 滑动窗口最大值(TreeSet 解法)
Leetcode 239. 滑动窗口最大值(TreeSet 解法)* 题目: * 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 * 返回 滑动窗口中的最大值 。 * 1原创 2023-03-24 11:19:49 · 191 阅读 · 0 评论 -
Leetcode 72. 编辑距离
Leetcode 72. 编辑距离* 题目: * 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 * 你可以对一个单词进行如下三种操作: * 插入一个字符 * 删除一个字符 * 替换一个字符 * 0原创 2023-03-22 18:21:46 · 423 阅读 · 0 评论 -
Leetcode 105. 从前序与中序遍历序列构造二叉树
* Leetcode 105. 从前序与中序遍历序列构造二叉树题目: * 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历,inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 * 1原创 2023-03-17 19:05:17 · 469 阅读 · 0 评论 -
Leetcode 146. LRU 缓存(二)LinkedHashMap 原理分析
Leetcode 146. LRU 缓存(二)LinkedHashMap 原理分析* 题目: * 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 * 实现 LRUCache 类: * LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 * int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1原创 2023-03-16 18:28:49 · 460 阅读 · 0 评论 -
Leetcode 146. LRU 缓存(一)
Leetcode 146. LRU 缓存题目: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如原创 2023-03-15 15:31:31 · 175 阅读 · 0 评论 -
Leetcode 234. 回文链表
题目: Leetcode 234. 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 链表中节点数目在范围[1, 10^5] 内 0原创 2023-03-14 12:51:44 · 37 阅读 · 0 评论 -
Leetcode 96. 不同的二叉搜索树
Leetcode 96. 不同的二叉搜索树题目: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 1原创 2023-03-11 21:35:17 · 25 阅读 · 0 评论 -
Leetcode 236. 二叉树的最近公共祖先
Leetcode 236. 二叉树的最近公共祖先题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”原创 2023-03-10 15:42:39 · 330 阅读 · 0 评论 -
Leetcode 148. 排序链表(二路归并)
题目: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。解法一: 递归解法,自顶向下 链表版二路归并排序(升序,递归版),稳定排序 时间复杂度为 O(n*logn);空间复杂度:递归栈的深度 O(logn)原创 2023-03-05 22:09:05 · 231 阅读 · 0 评论 -
Leetcode 148. 排序链表(快排)
小于中心的插头,大于中心的插尾,等于中心的插入 leftPivot 和 rightPivot 中间(减少相同的元素的递归)注意:添加虚拟节点,提取出来的随机节点要最后才指向空,如果新尾结点从没有移动过则需要随着 rightPivot 移动。给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。时间复杂度为 O(n*logn);空间复杂度:O(logn)然后以中心节点为头,从头到尾循环当前链表,接着将新的头尾节点连接上原有节点,链表版快排,它属于不稳定排序。先获得并提取随机中心,原创 2023-03-01 00:00:37 · 100 阅读 · 0 评论 -
Leetcode 494. 目标和
Leetcode 494. 目标和原创 2023-02-26 04:50:34 · 32 阅读 · 0 评论 -
Leetcode 42. 接雨水
Leetcode 42. 接雨水原创 2023-02-25 01:20:20 · 60 阅读 · 0 评论