NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
1 | 两数之和 | C++ | Easy | Mapping |
15 | 三数之和 | C++ | Medium | 排序+双指针 |
26 | 删除排序数组中的重复项 | C++ | Easy | 双指针 |
27 | 移除元素 | C++ | Easy | |
33 | 搜索旋转排序数组 | C++ | Medium | 二分查找 |
34 | 在排序数组中查找元素的第一个和最后一个位置 | C++ | Medium | 二分查找 |
35 | 搜索插入位置 | C++ | Easy | 二分查找 |
41 | 缺失的第一个正数 | C++ | Hard | 哈希 |
48 | 旋转图像 | C++ | Medium | 辅助数组、水平翻转+对角线翻转 |
53 | 最大子序和 | C++ | Easy | 动态规划 |
54 | 螺旋矩阵 | C++ | Medium | 模拟法 |
66 | 加一 | C++ | Easy | |
88 | 合并两个有序数组 | C++ | Easy | |
118 | 杨辉三角 | C++ | Easy | |
119 | 杨辉三角II | C++ | Easy | 动态规划 |
121 | 买卖股票的最佳时机 | C++ | Easy | |
122 | 买卖股票的最佳时机II | C++ | Easy | 贪心 |
128 | 最长连续序列 | C++ | Medium | 哈希表 |
135 | 分发糖果 | C++ | Hard | 两次遍历 |
167 | 两数之和II-数组有序数组 | C++ | Easy | 双指针 |
169 | 多数元素 | C++ | Easy | 哈希、众数、Boyer-Moore |
179 | 最大数 | C++ | Medium | 贪心 |
200 | 岛屿数量 | C++ | Medium | bfs、dfs |
207 | 课程表 | C++ | Medium | bfs、dfs |
209 | 长度最小的子数组 | C++ | Medium | 滑动窗口 |
210 | 课程表II | C++ | Medium | dfs+栈 |
215 | 数组中的第K个最大元素 | C++ | Medium | 快速选择 |
216 | 组合总和 | C++ | Medium | 回溯 |
217 | 存在重复元素 | C++ | Easy | set、排序、哈希 |
219 | 存在重复元素II | C++ | Easy | 哈希、滑动窗口 |
221 | 最大正方形 | C++ | Medium | 动态规划 |
223 | 矩形面积 | C++ | Medium | |
225 | 用队列实现栈 | C++ | Easy | |
228 | 区间汇总 | C++ | Easy | |
229 | 求众数 | C++ | Medium | 哈希表、Moore Voting |
239 | 滑动窗口的最大值 | C++ | Hard | 优先队列 |
268 | 丢失的数字 | C++ | Easy | 数学、异或 |
283 | 移动零 | C++ | Easy | 双指针 |
295 | 数据流的中位数 | C++ | Hard | sort排序、插入排序 |
303 | 区域和检索-数组不可变 | C++ | Easy | 前缀和 |
321 | 拼接最大数 | C++ | Hard | 单调栈 |
363 | 矩形区域不超过K的最大数值和 | C++ | Hard | 有序集合 |
395 | 至少有k个重复字符的最长子串 | C++ | Medium | 分治 |
498 | 对角线遍历 | C++ | Medium | 模拟 |
509 | 斐波那契数 | C++ | Easy | |
523 | 连续的子数组和 | C++ | Medium | 双指针、前缀和 |
560 | 和为K的子数组 | C++ | Medium | 枚举、前缀和+哈希表 |
867 | 转置矩阵 | C++ | Easy | |
912 | 排序数组 | C++ | Medium | 快速排序、堆排序、归并排序 |
977 | 有序数组的平方 | C++ | Easy | 双指针 |
1588 | 所有奇数长度子数组的和 | C++ | Easy | 动态规划、滑动窗口 |
剑指 offer59 | 队列的最大值 | C++ | Medium | 双端队列 |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
2 | 两数相加 | C++ | Medium | 模拟法 |
19 | 删除链表的倒数第N个节点 | C++ | Medium | 快慢指针 |
21 | 合并两个有序链表 | C++ | Easy | 递归法、迭代法 |
23 | 合并K个升序链表 | C++ | Hard | 优先队列、分治合并 |
24 | 两两交换链表的节点 | C++ | Medium | 递归法、迭代法 |
25 | K个一组翻转链表 | C++ | Hard | |
61 | 旋转链表 | C++ | Medium | 双指针法 |
82 | 删除排序链表中的重复元素II | C++ | Medium | 双指针法、迭代法 |
83 | 删除排序链表中的重复元素 | C++ | Easy | 单指针法、双指针法、迭代法 |
86 | 分隔链表 | C++ | Medium | 双指针法 |
83 | 删除排序链表中的重复元素 | C++ | Easy | 单指针法、双指针法、迭代法 |
83 | 删除排序链表中的重复元素 | C++ | Easy | 单指针法、双指针法、迭代法 |
92 | 反转链表II | C++ | Medium | 双指针法 |
141 | 环形链表 | C++ | Easy | 哈希、快慢指针法 |
142 | 环形链表II | C++ | Medium | 哈希、快慢指针 |
143 | 重排链表 | C++ | Medium | 线性表、寻找链表中点+逆序+合并 |
147 | 对链表进行插入排序 | C++ | Medium | |
148 | 排序链表 | C++ | Medium | 快慢指针+递归法 |
160 | 相交链表 | C++ | Easy | 双指针法、哈希表法 |
203 | 移除链表的元素 | C++ | Easy | 使用哨兵节点做伪节点 |
206 | 反转链表 | C++ | Easy | 双指针法 |
234 | 回文链表 | C++ | Easy | vector容器+双指针 |
237 | 删除链表中的节点 | C++ | Easy | 快慢指针法 |
328 | 奇偶链表 | C++ | Medium | 双指针法 |
445 | 两数相加II | C++ | Medium | 栈 |
707 | 设计链表 | C++ | Medium | |
876 | 链表的中间节点 | C++ | Easy | 数组法、单指针法、快慢指针法 |
1019 | 链表中的下一个更大节点 | C++ | Medium | 栈 |
1290 | 二进制链表转整数 | C++ | Easy | 模拟法、位运算 |
剑指 offer06 | 从尾到头打印链表 | C++ | Easy | 递归法 |
剑指 offer22 | 链表中的倒数第K个节点 | C++ | Easy | 快慢指针 |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
94 | 二叉树的中序遍历 | C++ | Medium | 迭代法、递归法 |
95 | 不同的二叉搜索树II | C++ | Medium | 递归法 |
96 | 不同的二叉搜索树 | C++ | Medium | 动态规划 |
98 | 验证二叉搜索树 | C++ | Medium | 递归法 |
99 | 恢复二叉搜索树 | C++ | Hard | 模拟法 |
100 | 相同的树 | C++ | Easy | DFS、BFS |
101 | 对称二叉树 | C++ | Easy | 递归法、迭代法 |
102 | 二叉树的层序遍历 | C++ | Medium | BFS |
103 | 二叉树的锯齿形层次遍历 | C++ | Medium | DFS递归法、BFS迭代法 |
104 | 二叉树的最大深度 | C++ | Easy | BFS、DFS |
105 | 从前序和中序遍历序列构造二叉树 | C++ | Medium | 递归法、迭代法 |
106 | 从中序和后序遍历序列构造二叉树 | C++ | Medium | 递归法、迭代法 |
107 | 二叉树的层次遍历II | C++ | Easy | BFS |
108 | 将有序数组转换为二叉搜索树 | C++ | Easy | 中序遍历 |
110 | 平衡二叉树 | C++ | Easy | 递归法 |
111 | 二叉树的最小深度 | C++ | Easy | BFS、DFS |
112 | 路径总和 | C++ | Easy | BFS、DFS |
113 | 路径总和II | C++ | Medium | dfs递归 |
114 | 二叉树展开为链表 | C++ | Medium | 递归法、迭代法 |
116 | 填充每个节点的下一个右侧节点的指针 | C++ | Medium | 层次遍历 |
117 | 填充每个节点的下一个右侧节点的指针II | C++ | Medium | 层次遍历 |
144 | 二叉树的前序遍历 | C++ | Medium | 迭代法、递归法 |
145 | 二叉树的后序遍历 | C++ | Medium | 递归法、迭代法 |
199 | 二叉树的右视图 | C++ | Medium | 层次遍历 |
222 | 完全二叉树的节点个数 | C++ | Medium | 递归法 |
226 | 翻转二叉树 | C++ | Easy | 递归法 |
230 | 二叉搜索树中的第K小的元素 | C++ | Medium | 中序遍历、递归+二分查找 |
235 | 二叉搜索树的最近公共祖先 | C++ | Easy | 迭代法 |
257 | 二叉树的所有路径 | C++ | Easy | BFS、DFS |
297 | 二叉树的序列化和反序列化 | C++ | Hard | 迭代法 |
404 | 左子树之和 | C++ | Easy | DFS、BFS |
429 | N叉树的层次遍历 | C++ | Medium | BFS |
450 | 删除二叉搜索树中的节点 | C++ | Medium | 递归法 |
501 | 二叉搜索树中的众数 | C++ | Easy | dfs中序遍历 |
508 | 出现次数最多的子树元素和 | C++ | Medium | 后序遍历递归法 |
513 | 找树最下角的值 | C++ | Medium | 递归法、层次遍历 |
515 | 在每个树行中找最大值 | C++ | Medium | 层次遍历 |
530 | 二叉搜索树的最小绝对差 | C++ | Easy | dfs递归 |
543 | 二叉树的直径 | C++ | Easy | 递归法 |
559 | N叉树的最大深度 | C++ | Medium | 递归法、迭代法 |
563 | 二叉树的坡度 | C++ | Easy | DFS |
572 | 另一个树的子树 | C++ | Easy | dfs递归法 |
589 | N叉树的前序遍历 | C++ | Easy | 递归法、迭代法 |
590 | N叉树的后序遍历 | C++ | Easy | 递归法、迭代法 |
617 | 合并二叉树 | C++ | Easy | 递归法、迭代法 |
623 | 在二叉树中增加一行 | C++ | Medium | 层次遍历 |
637 | 二叉树的层平均值 | C++ | Easy | BFS迭代法 |
652 | 寻找重复的子树 | C++ | Medium | dfs |
653 | 两数之和IV-输入BST | C++ | Easy | 中序遍历+双指针 |
654 | 最大二叉树 | C++ | Medium | 递归法 |
662 | 二叉树最大宽度 | C++ | Medium | 层次遍历 |
701 | 二叉搜索树中的插入操作 | C++ | Medium | 模拟法 |
814 | 二叉树的剪枝 | C++ | Medium | 递归法 |
889 | 根据前序和后序遍历构造二叉树 | C++ | Medium | 递归法 |
958 | 二叉树的完全性检验 | C++ | Medium | BFS |
965 | 单值二叉树 | C++ | Easy | 递归法 |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
3 | 无重复字符的最长子串 | C++ | Medium | 哈希集合、滑动窗口+双指针 |
5 | 最长回文子串 | C++ | Medium | 暴力求解、动态规划、中心扩展法 |
6 | Z字形变换 | C++ | Medium | 模拟法 |
8 | 字符串转换整数 | C++ | Medium | 遍历+标志位 |
12 | 整数转罗马数字 | C++ | Medium | |
13 | 罗马数字转整数 | C++ | Easy | 模拟法 |
14 | 最长公共前缀 | C++ | Easy | 横向扫描 |
17 | 电话号码的字母组合 | C++ | Medium | 回溯 |
20 | 有效的括号 | C++ | Easy | 栈 |
22 | 括号生成 | C++ | Medium | 递归 |
28 | 实现strStr() | C++ | Easy | KMP |
38 | 外观数列 | C++ | Easy | 递归法 |
58 | 最后一个单词的长度 | C++ | Easy | 模拟法 |
67 | 二进制求和 | C++ | Easy | |
125 | 验证回文串 | C++ | Easy | 双指针法 |
151 | 翻转字符串里的单词 | C++ | Medium | |
208 | 实现Trie前缀树 | C++ | Medium | 回溯 |
211 | 添加和搜索单词-数据结构设计 | C++ | Medium | |
227 | 基本计算器 | C++ | Medium | 栈 |
239 | 滑动窗口最大值 | C++ | Hard | 优先队列 |
306 | 累加数 | C++ | Medium | 回溯 |
344 | 反转字符串 | C++ | Easy | 双指针法 |
345 | 反转字符串中的元音字母 | C++ | Easy | 双指针法 |
383 | 赎金信 | C++ | Easy | 哈希表 |
387 | 字符串中的第一个唯一字符 | C++ | Easy | 哈希表、哈希+队列 |
392 | 判断子序列 | C++ | Easy | 双指针、动态规划 |
401 | 二进制手表 | C++ | Easy | 位运算 |
415 | 字符串相加 | C++ | Easy | 模拟法 |
434 | 字符串中的单词数 | C++ | Easy | |
459 | 重复的子字符串 | C++ | Easy | 字符串匹配 |
520 | 检测大写字母 | C++ | Easy | 数组存储 |
521 | 最长特殊序列I | C++ | Easy | |
541 | 反转字符串II | C++ | Easy | |
551 | 学生出勤记录I | C++ | Easy | find()函数 |
567 | 字符串的排列 | C++ | Medium | 滑动窗口 |
606 | 根据二叉树创建字符串 | C++ | Easy | 递归法 |
647 | 回文子串 | C++ | Medium | 中心扩散法 |
657 | 机器人是否返回原点 | C++ | Easy | |
696 | 计数二进制子串 | C++ | Easy | 按字符分组 |
709 | 转换成小写字母 | C++ | Easy | 位运算、利用ASCII码 |
788 | 旋转数字 | C++ | Easy | |
804 | 唯一的莫尔斯密码 | C++ | Easy | 遍历 |
819 | 最常见的单词 | C++ | Easy | 哈希+集合 |
824 | 山羊拉丁文 | C++ | Easy | |
859 | 亲密字符串 | C++ | Easy | 双指针 |
893 | 特殊等价字符串组 | C++ | Easy | 集合set |
917 | 仅仅反转字母 | C++ | Easy | 双指针 |
925 | 长按键入 | C++ | Easy | 双指针 |
929 | 独特的电子邮件地址 | C++ | Easy | |
937 | 重新排列日志文件 | C++ | Easy | stable_sort |
978 | 最长湍流子数组 | C++ | Medium | 滑动窗口 |
剑指 offer-48 | 最长不含重复字符的子字符串 | C++ | Medium | 滑动窗口 |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
17 | 电话号码的字母组合 | C++ | Medium | 回溯 |
22 | 括号生成 | C++ | Medium | 回溯 |
39 | 组合总和 | C++ | Meidum | 回溯 |
40 | 组合总和II | C++ | Meidum | 回溯 |
46 | 全排列 | C++ | Medium | 回溯 |
47 | 全排列II | C++ | Medium | 回溯 |
51 | N皇后 | C++ | Hard | 回溯 |
77 | 组合 | C++ | Medium | 回溯 |
78 | 子集 | C++ | Meidum | 回溯 |
79 | 单词搜索 | C++ | Medium | 回溯 |
90 | 子集II | C++ | Medium | 回溯 |
93 | 复原IP地址 | C++ | Medium | 回溯 |
131 | 分割回文串 | C++ | Medium | 回溯 |
140 | 单词拆分 | C++ | Hard | 回溯 |
216 | 组合总和III | C++ | Medium | 回溯 |
306 | 累加数 | C++ | Medium | 回溯 |
784 | 字母大小写全排列 | C++ | Medium | 回溯 |
797 | 所有可能的路径 | C++ | Medium | 回溯 |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
89 | 格雷编码 | C++ | Medium | 位运算 |
136 | 只出现一次的数字 | C++ | Easy | 位运算 |
137 | 只出现一次的数字II | C++ | Medium | 位运算 |
190 | 颠倒二进制位 | C++ | Easy | 位运算 |
191 | 位1的个数 | C++ | Easy | 位运算 |
201 | 数字范围按位与 | C++ | Medium | 位运算 |
231 | 2的幂 | C++ | Easy | 位运算 |
260 | 只出现一次的数字III | C++ | Medium | 位运算 |
318 | 最大单词长度乘积 | C++ | Medium | 位运算 |
342 | 4的幂 | C++ | Easy | 位运算 |
371 | 两整数之和 | C++ | Medium | 位运算 |
389 | 找不同 | C++ | Easy | 位运算 |
405 | 数字转换为十六进制数 | C++ | Easy | 位运算 |
461 | 汉明距离 | C++ | Easy | 位运算 |
477 | 汉明距离总和 | C++ | Medium | 位运算 |
784 | 字母大小写全排列 | C++ | Medium | 位运算 |
1290 | 二进制链表转整数 | C++ | Easy | 位运算 |
1486 | 数组异或操作 | C++ | Easy | 模拟法 |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
208 | 实现Trie前缀树 | C++ | Medium | |
211 | 添加和搜索单词-数据结构设计 | C++ | Medium |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
5 | 最长回文子串 | C++ | Medium | 动态规划、中心扩展法、暴力求解 |
10 | 正则表达式匹配 | C++ | Hard | 动态规划 |
32 | 最长有效括号 | C++ | Hard | 动态规划、栈 |
42 | 接雨水 | C++ | Hard | 暴力求解、单调栈、双指针、动态规划 |
44 | 通配符 | C++ | Hard | 动态规划 |
53 | 最大子序和 | C++ | Easy | 动态规划、线段树 |
62 | 不同路径 | C++ | Medium | 动态规划 |
63 | 不同路径II | C++ | Medium | 动态规划 |
64 | 最小路径和 | C++ | Medium | 动态规划 |
70 | 爬楼梯 | C++ | Easy | 动态规划 |
72 | 编辑距离 | C++ | Hard | 动态规划 |
85 | 最大矩形 | C++ | Hard | 动态规划 |
91 | 解码方法 | C++ | Medium | 动态规划 |
97 | 交错字符串 | C++ | Medium | 动态规划 |
115 | 不同的子序列 | C++ | Hard | 动态规划 |
120 | 三角形最小路径和 | C++ | Medium | 动态规划 |
121 | 买卖股票的最佳时机 | C++ | Medium | 动态规划 |
122 | 买卖股票的最佳时机II | C++ | Medium | 动态规划 |
132 | 分割回文串 | C++ | Hard | 动态规划 |
139 | 单词拆分 | C++ | Medium | 动态规划 |
152 | 乘积最大子数组 | C++ | Medium | 动态规划 |
198 | 打家劫舍 | C++ | Medium | 动态规划 |
213 | 打家劫舍II | C++ | Medium | 动态规划 |
221 | 最大正方形 | C++ | Medium | 动态规划 |
264 | 丑数II | C++ | Medium | 动态规划 |
300 | 最长递增子序列 | C++ | Medium | 动态规划 |
303 | 区域和检索-数组不可变 | C++ | Easy | 动态规划 |
304 | 区域和检索-矩阵不可变 | C++ | Medium | 动态规划 |
309 | 最佳买卖股票时机含冷冻期 | C++ | Medium | 动态规划 |
322 | 零钱兑换 | C++ | Medium | 动态规划 |
337 | 打家劫舍III | C++ | Medium | 动态规划 |
376 | 摆动序列 | C++ | Medium | 动态规划、贪心算法 |
377 | 组合总和IV | C++ | Medium | 动态规划 |
392 | 判断子序列 | C++ | Medium | 双指针、动态规划 |
413 | 等差数列划分 | C++ | Medium | 动态规划 |
416 | 分割等和子集 | C++ | Medium | 动态规划 |
464 | 我能赢吗 | C++ | Medium | 动态规划 |
467 | 环绕字符串中唯一的子字符串 | C++ | Medium | 动态规划 |
494 | 目标和 | C++ | Medium | 动态规划、回溯 |
673 | 最长递增子序列的个数 | C++ | Medium | 动态规划 |
698 | 划分为k个相等的子集 | C++ | Medium | 动态规划、回溯 |
714 | 买卖股票的最佳实际含手续费 | C++ | Medium | 动态规划 |
718 | 最长重复子数组 | C++ | Medium | 动态规划 |
746 | 使用最小花费爬楼梯 | C++ | Easy | 动态规划 |
801 | 使序列递增的最小交换次数 | C++ | Medium | 动态规划 |
931 | 下降路径最小和 | C++ | Medium | 动态规划 |
1025 | 除数博弈 | C++ | Easy | 动态规划 |
1143 | 最长公共子序列 | C++ | Medium | 动态规划 |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
33 | 搜索旋转排序数组 | C++ | Medium | 二分查找 |
69 | x的平方根 | C++ | Easy | 二分查找 |
NO. | Title | Solution | Difficulty | Tip |
---|---|---|---|---|
3 | 无重复字符的最长子串 | C++ | Medium | 双指针+哈希 |
76 | 最小覆盖子串 | C++ | Hard | 滑动窗口 |
209 | 长度最小的子数组 | C++ | Medium | 滑动窗口 |
219 | 存在重复元素 | C++ | Easy | 滑动窗口、哈希 |
239 | 滑动窗口的最大值 | C++ | Hard | 滑动窗口 |
424 | 替换后的最长重复字符 | C++ | Medium | 滑动窗口 |
567 | 字符串的排列 | C++ | Medium | 滑动窗口 |
978 | 最长湍流子数组 | C++ | Medium | 滑动窗口 |
剑指 offer-48 | 最长不含重复字符的子字符串 | C++ | Medium | 滑动窗口 |