LC 92. 反转链表 II 题目描述这是 LeetCode 上的 92. 反转链表 II ,难度为 中等。 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 12输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5 2021-03-18 链表
LC 115. 不同的子序列 题目描述这是 LeetCode 上的 115. 不同的子序列 ,难度为 困难。 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是) 2021-03-17 线性 DP
LC 59. 螺旋矩阵 II 题目描述这是 LeetCode 上的 59. 螺旋矩阵 II ,难度为 中等。 给你一个正整数 $n$ ,生成一个包含 $1$ 到 $n^2$ 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1:123输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:123输入:n = 1输出:[[1]] 提示: $1 <= n &l 2021-03-16 模拟
LC 54. 螺旋矩阵 题目描述这是 LeetCode 上的 59. 螺旋矩阵 ,难度为 中等。 给你一个 $m$ 行 $n$ 列的矩阵 matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1:123输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:123输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10 2021-03-15 模拟
LC 706. 设计哈希映射 题目描述这是 LeetCode 上的 706. 设计哈希映射 ,难度为 简单。 不使用任何内建的哈希表库设计一个哈希映射(HashMap)。 实现 MyHashMap 类: MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中,则更新其对应的值 value 2021-03-14 哈希表
LC 705. 设计哈希集合 题目描述这是 LeetCode 上的 705. 设计哈希集合 ,难度为 简单。 不使用任何内建的哈希表库设计一个哈希集合(HashSet)。 实现 MyHashSet 类: void add(key) 向哈希集合中插入值 key 。bool contains(key) 返回哈希集合中是否存在这个值 key 。void remove(key) 将给定值 key 从哈希集合中删除。如果哈希集合中没有这 2021-03-13 哈希表
LC 331. 验证二叉树的前序序列化 题目描述这是 LeetCode 上的 331. 验证二叉树的前序序列化 ,难度为 中等。 序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。 如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 1234567 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # 2021-03-12 二叉树
LC 227. 基本计算器 II 题目描述这是 LeetCode 上的 227. 基本计算器 II ,难度为 中等。 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1:123输入:s = "3+2*2"输出:7示例 2:123输入:s = " 3/2 "输出:1示例 3:123输入:s = " 3+5 / 2 "输 2021-03-11 表达式计算
LC 224. 基本计算器 题目描述这是 LeetCode 上的 224. 基本计算器 ,难度为 中等。 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 示例 1:123输入:s = "1 + 1"输出:2示例 2:123输入:s = " 2-1 + 2 "输出:3示例 3:123输入:s = "(1+(4+5+2)-3)+(6+8)"输出: 2021-03-10 栈 表达式计算
LC 1786. 从第一个节点出发到最后一个节点的受限路径数 题目描述这是 LeetCode 上的 1786. 从第一个节点出发到最后一个节点的受限路径数 ,难度为 中等。 现有一个加权无向连通图。 给你一个正整数 n ,表示图中有 n 个节点,并按从 1 到 n 给节点编号。 另给你一个数组 edges,其中每个 $edges[i] = [u{i}, v{i}, weight{i}]$ 表示存在一条位于节点 $u{i}$ 和 $v{i}$ 之间的边,这条边 2021-03-09 最短路 线性 DP
LC 1047. 删除字符串中的所有相邻重复项 题目描述这是 LeetCode 上的 1047. 删除字符串中的所有相邻重复项 ,难度为 简单。 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例:1234输入:"abbaca"输出:"ca"解释:例如 2021-03-09 模拟 队列
LC 132. 分割回文串 II 题目描述这是 LeetCode 上的 132. 分割回文串 II ,难度为 困难。 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。 返回符合要求的 最少分割次数 。 示例 1:123输入:s = "aab"输出:1解释:只需一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。示例 2:12输入:s = 2021-03-08 线性 DP 回文串
LC 131. 分割回文串 题目描述这是 LeetCode 上的 131. 分割回文串 ,难度为 中等。 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 回文串是正着读和反着读都一样的字符串。 示例 1:12输入:s = "aab"输出:[["a","a","b"],["aa&qu 2021-03-07 动态规划 回溯算法 回文串
LC 503. 下一个更大元素 II 题目描述这是 LeetCode 上的 503. 下一个更大元素 II ,难度为 中等。 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。 数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。 示例 1:1234567输入: [1,2,1]输出: [2,-1 2021-03-06 单调栈
LC 232. 用栈实现队列 题目描述这是 LeetCode 上的 232. 用栈实现队列 ,难度为 简单。 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empt 2021-03-05 栈 队列