1. The sum of two numbers (simple) |
Hash table |
2. Add two numbers (simple) |
Linked list |
3. The longest substring without repeated characters (medium) |
Sliding window |
5. The longest palindrome substring (medium) |
|
7. Inversion of integers (simple) |
|
8. String conversion to integer (atoi) (medium) |
String |
9. Number of palindrome (simple) |
|
11. Container with the most water (medium) |
Double pointer |
15. The sum of three numbers (medium) |
Double pointer |
16. Sorting plus double pointer (medium) |
Double pointer |
18. The sum of four numbers (medium) |
Double pointer |
19. Delete the Nth node from the bottom of the linked list (medium) |
Linked list |
20. Effective parentheses (simple) |
|
21. Merge two ordered linked lists (simple) |
Linked list |
26. Delete duplicates in the sorted array (simple) |
Double pointer |
36. Effective Sudoku (medium) |
|
42. Receiving rainwater (difficulty) |
Monotonic stack |
43. String multiplication (medium) |
|
46. Full arrangement (medium) |
Backtracking |
50.Pow (x, y) |
Fast power |
53. Maximum subsequence sum (simple) |
Moving rules |
55. Jumping game (medium) |
|
56. Consolidation interval (medium) |
Sort |
58. The length of the last word ( |
|
64. Minimum path sum (medium) |
Moving rules |
70. Climbing stairs (simple) |
Moving rules |
71. Simplify the path (medium) |
Stack, queue |
72. Edit distance (difficult) |
Dynamic programming |
75. Color split (medium) |
Double pointer |
79. Word search (medium) |
dfs |
83. Delete duplicate elements in the sorted list (simple) |
Linked list |
84. The largest matrix in the histogram (difficulty) |
Monotonous stack, sentinel |
94. In-order traversal of binary trees (medium) |
Binary tree |
100. The same tree (simple) |
Binary tree |
101. Symmetric Binary Tree (Simple) |
|
103. Zigzag hierarchical traversal of binary tree (medium) |
BFS、DFS |
104. The maximum depth of the binary tree (simple) |
Binary tree |
105. Construct a binary tree from the pre-order and middle-order traversal sequence (medium) |
Binary tree |
106. Construct a binary tree from the middle order and subsequent traversal sequence (medium) |
Binary tree |
107. Binary tree level traversal II (simple) |
BFS |
111. The minimum depth of a binary tree (simple) |
BFS、DFS |
112.路径总和(简单) |
BFS、DFS |
114.二叉树展开为链表(中等) |
二叉树 |
116.填充每个节点的下一个右侧节点指针(中等) |
二叉树 |
121.买卖股票的最佳时机(简单) |
|
122.买卖股票的最佳时机II(简单) |
|
128.最长连续序列(困难) |
|
129.求根节点到叶节点数字之和(中等) |
DFS |
130.被围绕的区域(中等) |
DFS |
135.分发糖果(困难) |
贪心 |
136.只出现一次的数字(简单) |
|
141.环形链表(简单) |
链表、快慢指针 |
144.二叉树的前序遍历(中等) |
二叉树、栈、DFS |
145.二叉树的后序遍历(中等) |
二叉树 |
150.逆波兰表达式求值(中等) |
栈 |
160.相交链表(简单) |
链表、双指针 |
165.比较版本号(中等) |
|
172.阶乘后的零(简单) |
|
173.二叉搜索树迭代器(中等) |
二叉树 |
189.旋转数组(中等) |
数组 |
191.位1的个数(简单) |
位运算 |
198.打家劫舍(简单) |
|
200.岛屿数量(中等) |
DFS |
204.计数质数(简单) |
|
205.同构字符串(简单) |
|
215.数组中的第K个最大元素(中等) |
优先队列、排序 |
217.存在重复元素(简单) |
哈希 |
222.完全二叉树的节点个数(中等) |
二叉树 |
225.用队列实现栈(简单) |
队列 |
226.反转二叉树(简单) |
二叉树 |
231.2的幂(简单) |
位运算 |
232.用栈实现队列(简单) |
栈 |
234.回文链表(简单) |
链表、双指针 |
235.二叉搜索树的最近公共祖先(简单) |
二叉树 |
236.二叉树的最近公共祖先(中等) |
二叉树 |
239.滑动窗口最大值(困难) |
滑动窗口、队列 |
240.搜索二维矩阵(中等) |
|
252.会议室(简单) |
排序 |
257.二叉树的所有路径(简单) |
二叉树 |
279.完全平方数(中等) |
动态规划 |
283.移动零(简单) |
双指针 |
295.数据流的中位数(困难) |
|
312.戳气球(困难) |
动态规划 |
316.去除重复字母(中等) |
单调栈 |
322.无向图中的连通分量的数目(中等) |
DFS、BFS |
326.3的幂(简单) |
|
342.4的幂(简单) |
位运算 |
344.反转字符串(简单) |
|
349.两个数组的交集(简单) |
|
350.两个数组的交集II(简单) |
|
355.设计推特(中等) |
哈希、链表(相当好的设计题目) |
373.查找和最小的K对数字(中等) |
堆 |
380.常数时间插入、是删除和获取随机元素(中等) |
|
387.字符串中的第一个唯一字符(简单) |
|
397.字符串解码(中等) |
栈 |
404.左叶子之和(简单) |
二叉树 |
412.Fizz Buzz(简单) |
|
429.N叉树的层序遍历(中等) |
树、BFS |
455.分发饼干(简单) |
|
494.目标和(中等) |
动态规划 |
496.下一个最大元素I(简单) |
栈 |
503.下一个更大元素II(中等) |
栈 |
509.斐波那契数(简单) |
动态规划 |
525.连续数组(中等) |
|
530.二叉搜索树的最小绝对值(简单) |
二叉树 |
542.01矩阵(中等) |
BFS |
547.朋友圈(中等) |
并查集 |
560.和为K的子数组(中等) |
前缀和 |
561.数组拆分(简单) |
|
566.重塑矩阵(简单) |
|
605.种花问题(简单) |
贪心 |
617.合并二叉树(简单) |
二叉树 |
622.设计循环队列(中等) |
队列 |
637.二叉树的层平均值(简单) |
二叉树 |
652.寻找重复的子树(中等) |
二叉树 |
654.最大二叉树(中等) |
二叉树 |
658.找到K个最接近的元素(中等) |
双指针 |
662.二叉树最大宽度(中等) |
|
682.棒球比赛(简单) |
栈 |
684.冗余连接(中等) |
并查集 |
692.前K个高频单词(中等) |
堆 |
705.设计哈希集合(简单) |
|
706.设计哈希映射(简单) |
|
717.1比特与2比特字符(简单) |
|
733.图像渲染(简单) |
dfs |
739.每日温度(中等) |
单调栈 |
752.打开键盘锁(中等) |
BFS |
771.宝石与石头(简单) |
哈希 |
793.阶乘函数后K个零(困难) |
|
819.最常见的单词(简单) |
哈希 |
841.钥匙和房间(中等) |
BFS |
844.比较含退格的字符串(简单) |
栈、双指针 |
853.车队(中等) |
排序 |
860.柠檬水找零(简单) |
模拟 |
877.石子游戏(中等) |
动态规划 |
888.公平的糖果棒交换(简单) |
哈希 |
896.单调数组(简单) |
|
897.递增顺序查找树(简单) |
二叉树 |
898.子数组按位或操作(中等) |
位运算 |
900.RLE迭代器(中等) |
|
901.股票价格跨度(中等) |
|
908.最小差值I(简单) |
|
933.最近的请求次数(简单) |
|
941.有效的山脉数组(简单) |
双指针 |
958.二叉树的完全性检验(中等) |
二叉树 |
969.煎饼排序(中等) |
|
977.有序数组的平方(简单) |
双指针 |
990.等式方程的可满足性(中等) |
并查集 |
1002.查找常用字符(简单) |
|
1018.可被5整除的二进制前缀(简单) |
|
1021.删除最外层的括号(简单) |
栈 |
1024.视频拼接(中等) |
贪心 |
1046.最后一块石头的重量(简单) |
队列 |
1047.删除字符串中的所有相邻重复项(简单) |
栈 |
1081.不同字符的最小子序列(中等) |
单调栈 |
1109.航班预定系统(中等) |
差分 |
1160.拼写单词(简单) |
|
1161.最大层内元素和(中等) |
BFS |
1162.地图分析(中等) |
BFS |
1170.比较字符串中最小字母的出现频次(简单) |
|
1171.从链表中删去总和值为零的连续节点(中等) |
链表 |
1184.公交站间的距离(简单) |
|
1185.一周中的第几天(简单) |
|
1207.独一无二的出现次数(简单) |
|
1143.最长公共子序列(中等) |
动态规划 |
1365.有多少小于当前数字的数字(简单) |
|
1441.用栈操作构建数组(简单) |
|
1480.一维数组的动态和(简单) |
动规 |
1610.可见点的最大数目(困难) |
|
5517.找到处理最多请求的服务器(困难) |
优先队列、TreeSet |
5535.括号的最大嵌套深度(简单) |
|
5641.卡车上的最大单元数(简单) |
贪心 |
5680.找到最近的有相同X或Y坐标的点(简单) |
|
5681.判断一个数字是否可以表示成三的幂的和(中等) |
技巧 |
5689.统计匹配检索规则的物品(简单) |
枚举 |
5713.字符串中不同整数的个数(简单) |
字符串 |
5714.替换字符串中的括号内容(中等) |
双指针 |
剑指Offer 04.二维数组中的查找(中等) |
|
剑指Offer 05.从尾到头打印链表(简单) |
|
剑指Offer 07.重建二叉树(中等) |
二叉树、DFS |
剑指Offer 09.用两个栈实现队列(简单) |
栈 |
剑指Offer 10-I.斐波那契数(简单) |
|
剑指Offer 11.旋转数组的最小数字(简单)i |
二分 |
剑指Offer 12.矩阵中的路径(中等) |
dfs、回溯 |
剑指Offer 13.机器人的运动范围(中等) |
DFS、BFS |
剑指Offer 14-I.剪绳子(中档) |
贪心 |
剑指Offer 18.删除链表的节点(简单) |
链表 |
剑指Offer 21.调整数组顺序使奇数位于偶数前面(简单) |
双指针 |
剑指Offer 26.树的子结构(中等) |
二叉树 |
剑指Offer 32-I.从上到下打印二叉树(中等) |
二叉树、BFS |
剑指Offer 32-III.从上到下打印二叉树(中等) |
二叉树、BFS |
剑指Offer 42.连续子数组的最大和(简单) |
|
剑指Offer 53-I.在排序数组中查找数字I(简单) |
二分 |
剑指Offer 54.二叉搜索树的第k大节点(简单) |
二叉树 |
剑指Offer 55-I.二叉树的深度(简单) |
二叉树 |
剑指Offer 55-II.平衡二叉树(简单) |
二叉树、剪枝 |
剑指Offer 56-I.数组中数字出现的次数(中等) |
位运算 |
剑指Offer 56-II.数组中数字出现的次数II(中等) |
数组 |
剑指Offer 57.和为s的两个数字(简单) |
双指针 |
剑指Offer 57-II.和为s的连续正数序列(简单) |
滑动窗口、双指针 |
剑指Offer 59-I.滑动窗口的最大值(简单) |
滑动窗口、单调队列 |
剑指Offer 61.扑克牌中的顺子(简单) |
|
剑指Offer 62.圆圈中最后剩下的数字(简单) |
约瑟夫环、数学 |
剑指Offer 63.股票的最大利润(中等) |
动态规划 |
剑指Offer 64.求1+2+…+n(中等) |
位运算 |
剑指Offer 65.不用加减乘除做加发(简单) |
位运算 |
剑指Offer 68-I.二叉搜索树的最近公共祖先(简单) |
二叉树 |
面试题 02.08.环路检测(中等) |
双指针 |
面试题 03.02.栈的最小值(简单) |
栈 |