LC 450. 删除二叉搜索树中的节点 题目描述这是 LeetCode 上的 450. 删除二叉搜索树中的节点 ,难度为 中等。 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 示例 1:123456输入:root = [5,3 2022-06-02 BST 递归
LC 473. 火柴拼正方形 题目描述这是 LeetCode 上的 473. 火柴拼正方形 ,难度为 中等。 你将得到一个整数数组 matchsticks,其中 $matchsticks[i]$ 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。 你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。 如果你能使这个正方形,则返回 true,否则返回 false。 示例 1:123 2022-06-01 DFS 剪枝 模拟退火 随机化 启发式搜索 爆搜
LC 209. 长度最小的子数组 题目描述这是 LeetCode 上的 209. 长度最小的子数组 ,难度为 中等。 给定一个含有 n 个正整数的数组和一个正整数 target。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 $[numsl, nums{l+1}, …, nums_{r-1}, nums_r]$ ,并返回其长度。如果不存在符合条件的子数组,返回 $0$ 。 示例 1:12345输入:target 2022-05-31 滑动窗口 二分 前缀和
LC 560. 和为 K 的子数组 题目描述这是 LeetCode 上的 560. 和为 K 的子数组 ,难度为 中等。 给你一个整数数组 nums 和一个整数 k ,请你统计并返回该数组中和为 k 的子数组的个数 。 示例 1:123输入:nums = [1,1,1], k = 2输出:2示例 2:123输入:nums = [1,2,3], k = 3输出:2 提示: $1 <= nums.length <= 2 \ 2022-05-31 哈希表 前缀和
LC 剑指 Offer II 114. 外星文字典 题目描述这是 LeetCode 上的 剑指 Offer II 114. 外星文字典 ,难度为 困难。 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按这门新语言的字母顺序进行了排序 。 请你根据该词典还原出此语言中已知的字母顺序,并 按字母递增顺序 排列。若不存在合法字母顺序,返回 " 2022-05-31 图论 BFS 拓扑排序 图论 建图
LC 1022. 从根到叶的二进制数之和 题目描述这是 LeetCode 上的 1022. 从根到叶的二进制数之和 ,难度为 简单。 给出一棵二叉树,其上每个结点的值都是 $0$ 或 $1$ 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。 例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 $13$ 。对树上的每一片叶子,我们都要找出从根到该叶子的路径 2022-05-30 DFS BFS 二叉树 树的遍历
LC 468. 验证IP地址 题目描述这是 LeetCode 上的 468. 验证IP地址 ,难度为 中等。 给定一个字符串 queryIP。如果是有效的 IPv4 地址,返回 "IPv4" ;如果是有效的 IPv6 地址,返回 "IPv6" ;如果不是上述类型的 IP 地址,返回 "Neither" 。 有效的 IPv4 地址 是 “x1.x2.x3.x4” 形式的 2022-05-29 模拟 双指针
LC 1021. 删除最外层的括号 题目描述这是 LeetCode 上的 1021. 删除最外层的括号 ,难度为 简单。 有效括号字符串为空 ""、"(" + A + ")" 或 A + B ,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。 例如,"","()","(())()" 和 "( 2022-05-28 模拟 双指针
LC 面试题 17.11. 单词距离 题目描述这是 LeetCode 上的 面试题 17.11. 单词距离 ,难度为 中等。 有个内含单词的超大文本文件,给定任意两个不同的单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗? 示例:123输入:words = ["I","am","a"," 2022-05-27 模拟 双指针
LC 699. 掉落的方块 题目描述这是 LeetCode 上的 699. 掉落的方块 ,难度为 困难。 在无限长的数轴(即 x 轴)上,我们根据给定的顺序放置对应的正方形方块。 第 i 个掉落的方块(positions[i] = (left, side_length))是正方形,其中 left 表示该方块最左边的点位置(positions[i][0]),side_length 表示该方块的边长(positions[i][1 2022-05-26 线段树 线段树(动态开点)
LC 467. 环绕字符串中唯一的子字符串 题目描述这是 LeetCode 上的 467. 环绕字符串中唯一的子字符串 ,难度为 中等。 把字符串 s 看作是 “abcdefghijklmnopqrstuvwxyz” 的无限环绕字符串,所以 s 看起来是这样的: "...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd...." . 现在给定另一个字符串 2022-05-25 线性 DP 树状数组
LC 965. 单值二叉树 题目描述这是 LeetCode 上的 965. 单值二叉树 ,难度为 简单。 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1:123输入:[1,1,1,1,1,null,1]输出:true示例 2:123输入:[2,2,2,5,2]输出:false 提示: 给定树的节点数范围是 $[1, 100]¥。 2022-05-24 DFS BFS 二叉树 树的遍历 层序遍历
LC 675. 为高尔夫比赛砍树 题目描述这是 LeetCode 上的 675. 为高尔夫比赛砍树 ,难度为 困难。 你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个 $m \times n$ 的矩阵表示, 在这个矩阵中: $0$ 表示障碍,无法触碰 $1$ 表示地面,可以行走 比 $1$ 大的数 表示有树的单元格,可以行走,数值表示树的高度 每一步,你都可以向上、下、左、右四个方向之一移动一个单位,如果你站的地方有一棵树 2022-05-23 并查集 图论 BFS 启发式搜索 AStar 算法
LC 464. 我能赢吗 题目描述这是 LeetCode 上的 464. 我能赢吗 ,难度为 中等。 在 “100 game” 这个游戏中,两名玩家轮流选择从 $1$ 到 $10$ 的任意整数,累计整数和,先使得累计整数和 达到或超过 $100$ 的玩家,即为胜者。 如果我们将游戏规则改为 “玩家 不能 重复使用整数” 呢? 例如,两个玩家可以轮流从公共整数池中抽取从 $1$ 到 $15$ 的整数(不放回),直到累计整数 2022-05-22 状态压缩 记忆化搜索 博弈论 DP
LC 961. 在长度 2N 的数组中找出重复 N 次的元素 题目描述这是 LeetCode 上的 961. 在长度 2N 的数组中找出重复 N 次的元素 ,难度为 简单。 给你一个整数数组 nums ,该数组具有以下属性: $nums.length == 2 \times n$ nums 包含 $n + 1$ 个 不同的 元素 nums 中恰有一个元素重复 $n$ 次 找出并返回重复了 $n$ 次的那个元素。 示例 1:123输入:nums = [1, 2022-05-21 哈希表 模拟 构造 计数