LC 1408. 数组中的字符串匹配 题目描述这是 LeetCode 上的 1408. 数组中的字符串匹配 ,难度为 简单。 给你一个字符串数组 words,数组中的每个字符串都可以看作是一个单词。 请你按任意顺序返回 words 中是其他单词的子字符串的所有单词。 如果你可以删除 words[j] 最左侧和/或最右侧的若干字符得到 word[i],那么字符串 words[i] 就是 words[j] 的一个子字符串。 示例 1:12 2022-08-06 模拟
LC 623. 在二叉树中增加一行 题目描述这是 LeetCode 上的 623. 在二叉树中增加一行 ,难度为 中等。 给定一个二叉树的根 root 和两个整数 val 和 depth,在给定的深度 depth 处添加一个值为 val 的节点行。 注意,根节点 root 位于深度 $1$ 。 加法规则如下: 给定整数 depth,对于深度为 depth - 1 的每个非空树节点 cur,创建两个值为 val 的树节点作为 cur 2022-08-05 DFS BFS 二叉树
LC 剑指 Offer 34. 二叉树中和为某一值的路径 题目描述这是 LeetCode 上的 剑指 Offer 34. 二叉树中和为某一值的路径 ,难度为 中等。 给你二叉树的根节点 root 和一个整数目标和 targetSum,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1:123输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], target 2022-08-04 DFS BFS 二叉树 递归 迭代
LC 剑指 Offer 32 - III. 从上到下打印二叉树 III 题目描述这是 LeetCode 上的 剑指 Offer 32 - III. 从上到下打印二叉树 III ,难度为 中等。 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7],12345 3 / \9 20 / \ 15 2022-08-04 DFS BFS 二叉树 递归 迭代
LC 剑指 Offer 32 - II. 从上到下打印二叉树 II 题目描述这是 LeetCode 上的 剑指 Offer 32 - II. 从上到下打印二叉树 II ,难度为 简单。 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如:给定二叉树: [3,9,20,null,null,15,7],12345 3 / \9 20 / \ 15 7返回其层次遍历结果:12345[ [3], [9,20], [15,7 2022-08-04 DFS BFS 二叉树 递归 迭代
LC 1403. 非递增顺序的最小子序列 题目描述这是 LeetCode 上的 1403. 非递增顺序的最小子序列 ,难度为 简单。 给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和严格大于未包含在该子序列中的各元素之和。 如果存在多个解决方案,只需返回长度最小的子序列。如果仍然有多个解决方案,则返回元素之和最大的子序列。 与子数组不同的地方在于,「数组的子序列」不强调元素在原数组中的连续性,也就是说,它可以通过从数 2022-08-04 贪心
LC 899. 有序队列 题目描述这是 LeetCode 上的 899. 有序队列 ,难度为 困难。 给定一个字符串 s 和一个整数 k 。 你可以从 s 的前 k 个字母中选择一个,并把它加到字符串的末尾。 返回 在应用上述步骤的任意数量的移动后,字典上最小的字符串 。 示例 1:1234567输入:s = "cba", k = 1输出:"acb"解释:在第一步中,我们将第一个字符 2022-08-03 构造 最小表示法
LC 622. 设计循环队列 题目描述这是 LeetCode 上的 622. 设计循环队列 ,难度为 中等。 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环,它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。 在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。 但是使用循环 2022-08-02 队列 设计数据结构
LC 剑指 Offer 32 - I. 从上到下打印二叉树 题目描述这是 LeetCode 上的 剑指 Offer 32 - I. 从上到下打印二叉树 ,难度为 中等。 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7],12345 3 / \9 20 / \ 15 7返回:1[3,9,20,15,7] 提示: 节点总数 <= 1000 迭代 - 2022-08-01 DFS BFS 二叉树 递归 迭代
LC 1374. 生成每种字符都是奇数个的字符串 题目描述这是 LeetCode 上的 1374. 生成每种字符都是奇数个的字符串,难度为 简单。 给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。 返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。 示例 1:12345输入:n = 4输出:"pppz"解释:"pppz&qu 2022-08-01 模拟
LC 1161. 最大层内元素和 题目描述这是 LeetCode 上的 1161. 最大层内元素和 ,难度为 中等。 给你一个二叉树的根节点 root。设根节点位于二叉树的第 $1$ 层,而根节点的子节点位于第 $2$ 层,依此类推。 请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。 示例 1:123456789输入:root = [1,7,0,7,-8,null,null]输出:2解释:第 1 2022-07-31 BFS 层序遍历
LC 剑指 Offer 24. 反转链表 题目描述这是 LeetCode 上的 剑指 Offer 24. 反转链表 ,难度为 简单。 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例:123输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL 限制: $0 <= 节点个数 <= 5000$ 迭 2022-07-30 递归 链表 迭代
LC 952. 按公因数计算最大组件大小 题目描述这是 LeetCode 上的 952. 按公因数计算最大组件大小 ,难度为 困难。 给定一个由不同正整数的组成的非空数组 nums,考虑下面的图: 有 nums.length 个节点,按从 nums[0] 到 nums[nums.length - 1] 标记; 只有当 nums[i] 和 nums[j] 共用一个大于 $1$ 的公因数时,nums[i] 和 nums[j]之间才有一条边。 2022-07-30 数学 并查集
LC 剑指 Offer 06. 从尾到头打印链表 题目描述这是 LeetCode 上的 剑指 Offer 06. 从尾到头打印链表 ,难度为 简单。 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1:123输入:head = [1,3,2]输出:[2,3,1] 限制: $0 <= 链表长度 <= 10000$ 迭代使用「迭代」方式求解是极其容易的。 在遍历链表 head 时,使用变长数组将节点值进行 2022-07-29 双指针 递归 链表 迭代
LC 剑指 Offer 25. 合并两个排序的链表 题目描述这是 LeetCode 上的 剑指 Offer 25. 合并两个排序的链表 ,难度为 简单。 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1:123输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 限制: $0 <= 链表长度 <= 1000$ 迭代 - 2022-07-29 递归 链表 迭代