数组 | 链表 | 栈/队列 | 跳表 | 散列表 | 二叉树/图 |
---|---|---|---|---|---|
✅ | ✅ |
贪心 | 分治 | 回溯 | 动态规划 | 递归 | 二分 | 搜索 |
---|---|---|---|---|---|---|
🀄️ |
题号 | 题解 | 进度 | 备注 |
---|---|---|---|
1.两树之和 | 1.暴力解 2.hash | ✅ | |
15.三数之和 | 1.暴力解 2.hash 3.i-j双指针 | ✅ | |
283.移动零 | 1.loop 2.滚雪球 3.0和n[i]交换位置 | ||
7.整数反转 | 1.%10 取余数 /10取整数部分。 越界判断 | ||
215.数组中第K个最大值 | 1.排序 2.堆 | ✅ | |
88.合并两个有序数组 | 三指针 p p1 p2 | ✅ | |
13.盛水最多的容器 | 1.暴力 2.双指针 | ✅ |
题号 | 题解 | 进度 | 备注 |
---|---|---|---|
202.快乐数 | 1.快慢指针 | ✅ | |
11.盛水问题 | 1.枚举 2、双指针左右夹逼 | ✅ |
1.快慢指针 2.构建dummy节点
题号 | 难度 | 题解 | 进度 | 备注 |
---|---|---|---|---|
141.环形链表 | 简单 | 1.set存储 遍历 2.双指针 | ✅ | |
206.链表反转 | 简单 | pre next两个节点 | ✅ | |
21.合并两个有序链表 | 简单 | 1.迭代 2.递归 | ✅ | |
23.合并 K 个升序链表 | ||||
19.删除链表的倒数第 N 个结点 | 简单 | 快慢指针 | ✅ | |
143.重排链表 | ||||
83.删除链表中重复元素 | 简单 | 迭代 | ✅ | |
82. 删除排序链表中的重复元素 II | 中等 | 构建一个dumpy节点 | ✅ | |
234.回文链表 | 简单 | 使用栈 | ✅ | codeTop 100 |
2.两数相加 | 简单 | carry x y | ✅ | |
445. 两数相加 II | 中等 | 1.构建栈 计算 链表反转 | ✅ | |
24.两两交换链表中的阶段 | 中等 | 0 1 2 dummy | ✅ | |
61.旋转链表 | 中等 | 中断断开 n n%=k 连接 | ✅ | codeTop 100 |
328.奇偶链表 | 中等 | 奇 偶 | ✅ | |
876.链表的中间节点 | 简单 | 快慢指针 | ✅ |
题号 | 难度 | 题解 | 进度 | 备注 |
---|---|---|---|---|
20.有效的括号 | 简单 | 1.([{存储栈 右边对比 | ✅ | |
232.栈实现队列 | 简单 | 1.in out 遍历 | ✅ | |
155.最小栈 | 简单 | 两个栈实现 | ✅ | |
84.柱状图中最大的矩形 |
题号 | 难度 | 题解 | 进度 | 备注 |
---|---|---|---|---|
239.滑动窗口最大值 | 简单 | |||
235.队列实现栈 | 简单 | 一个队列 | ✅ | |
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
242.有效的字母异位词 | 简单 | 1.排序对比 2.haset | ✅ | |
235.队列实现栈 | ||||
454.四数相加 | 1.HashMap存储AB的正值 用CD的负值去查找 | |||
49.字母异位词分组 | 1.一个map 将字符串转换字符数组 排好序之后,key 按照key进行排序。 | |||
3.无重复字符的最长子串 | 简单 | 1.hashmap | ✅ |
前、中、后、层、最近公共节点、之字、镜像☆、最大深度、路径和☆、k个节点、所有路径和、平衡二叉树、对称☆、序列化
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
98.验证二叉搜索树 | 简单 | 1.中序遍历 2.递归 | ✅ | |
99.恢复二叉搜索树 | 中序 1.迭代 2.递归 | |||
235.二叉搜索树的最近公共祖先 | 中等 | 都小于root 左子树 大于root 右子树 | ✅ | |
236. 二叉树的最近公共祖先 | 中等 | 1.先判空 然后左树 右树 | ✅ | ⭐️ |
94.二叉树的后序遍历 | 简单 | 1.递归 2.stack方式 | ✅ | |
144.二叉树的前序遍历 | 简单 | 1.递归 2.stack | ✅ | |
94.二叉树的中序遍历 | 简单 | 1.递归 左中右 2,栈结构 左中右push pop | ✅ | |
102.二叉树的层序遍历 | 中等 | 1.bfs+queue 2.dfs | ✅ | ⭐️ |
199.二叉树右视图 | 中等 | 1.层序遍历+判断最后一个节点 | ✅ | |
103. 二叉树的锯齿形层序遍历 | 中等 | 1.层序遍历+ 反数组 | ✅ | ⭐️ |
110.平衡二叉树 | 简单 | 递归过程 判断left 和 right 差值 > 1 不平衡 | ✅ | |
124. 二叉树中的最大路径和 | 困难 | 1.四个max 左 右 根 | ✅ | ❌ |
101.对称二叉树 | 简单 | 递归 | ✅ | |
543.二叉树的直径 | 中等 | 1.fds | ✅ | |
105.构建二叉树 | 中等 | 1.构建二叉树 | ✅ | ❌ |
94.N叉树的中序遍历 | 简单 | 1.递归 2.stack | ✅ | |
589.N叉树的前序遍历 | 简单 | 1.递归 2.stack | ✅ | |
429.N叉树的层序遍历 | 中等 | 1.queue cnt | ✅ | |
226.翻转二叉树 | 简单 | 递归 | ✅ | |
129. 求根节点到叶节点数字之和 | 中等 | 递归 *10 判断 | ✅ | |
Offer:二叉搜索树K节点 | 简单 | 右 cnt++ 左 | ✅ |
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
13.罗马数字转整数 | 简单 | 1.判断前一位树和后一位数大小 大于 做加法,小于做减法。 | ||
14.最长公共前缀 | 1.拿到第一个字符串 for for去和后续的字符串进行匹配。不等直接返回。ans 截取。 | |||
28.实现strStr() | 1.双指针 i指向长字符串 j指向短字符串 for for 遍历。 |
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
22.括号生成 | 简单 | 1.递归 left,right 分别加左右括号 同时在递归的过程中排除不符合的条件。 | ||
98.验证搜索二叉树 | 1.递归 中序遍历 2.递归 root的左子树的最大值是否大于根节点 root的右子树的最小值是否小于根节点 |
|||
104.二叉树的最大深度 | 简单 | 1.递归 Math.max(maxDepth(root.left),maxDepth(root.right))+1; |
✅ | |
111.二叉树的最小深度 | 简单 | 1.递归 `(leftDepth == 0 | rightDepth == 0) ? leftDepth+rightDepth+1 : Math.min(leftDepth,rightDepth)+1; ` | |
415.字符串相加 | 1.进位 carry=sum/10 num = sum %10 |
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
289.生命游戏 | 简单 | 1.分别遍历每个位置的8个方位。dfs就可以。 | ||
78.子集 | 1.dfs+回溯 | |||
200.岛屿数量 | 1.感染1为2 然后dfs查找 | |||
130.被围绕的区域 | 1.通过边界查找,查找到的O 设置为 # 如果dfs之后,还有o 那么就是被x围绕的 设置成x | |||
必须是排序的、通过下标进行查找
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
69.X的平方根 | 简单 | 二分 | ✅ | |
74.搜索二维矩阵 | 简单 | 1.i 高度 j 宽度 | ✅ | |
34.数组中第一个和最后一个的位置 | 中等 | 左开右闭区间 left right-1 | ✅ | |
287.寻找重复数 | 中等 | 快慢指针、二分 | ✅ | |
162.寻找峰值 | 中等 | 寻找峰值 | ✅ |
- 50.pow(x,n) 1.分治 通过将结果进行求取。 最后判断n==1 多乘一个x
- 79.单词搜索 1.dfs 上下左右四个方向查找
- 212.单词搜索-2 1.dfs 2.Trie树
- 17.电话号码的字母组合 1.回溯
- 93.复原ip地址 1.暴力求解 2.回溯
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
146.LRU缓存机制 | 简单 | 1.hashtable+双链表 |
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
146.LRU缓存机制 | 简单 | 1.hashtable+双链表 |
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
146.LRU缓存机制 | 简单 | 1.hashtable+双链表 | ||
难度 | 题解 | 进度 | 备注 | |
---|---|---|---|---|
191.1的个数 | 简单 | 1.n&=(n-1) 2.count+=n&1 |
✅ | |
231.2的幂 | 简单 | 1.(n>0)&&((n&(n-1)) == 0) 2.n%==0 n/=2 n==1 |
✅ | |
326.3的幂 | 简单 | 2.n%==0 n/=3 n==1 | ✅ | |
342.4的幂 | 简单 | 2.n%==0 n/=4 n==1 | ✅ | |
136.只出现一次的数字 | 简单 | x ^= num | ✅ | |
137. 只出现一次的数字 II | 中等 | 1.hashmap 2.位运算 ❌ | ✅ | |
260. 只出现一次的数字 III | 中等 | 1.hashmap 2.位运算 | ✅ | |
338.比特位计数 |
- 70.爬楼梯 1、递归 2、记忆化递归 3、dp 4、循环
- 三数之和 1、暴力解 2、哈希表 3、夹逼法(双指针)
- 48.旋转图像 1、先右上角和左下角为一条线 进行对其,交换数据。 中间上下交换数据。注意边界条件。
- 939.最小面积矩阵 1、通过计算最小对角线 注意边界 i j的取值
算法 dp 楼梯、三角形的最小路径和、乘积最大子序列、最长上升子序列、零钱兑换、编辑距离、 数组 最小k个数、合并数组、 字符串 优先队列 数据流中的第k大元素、返回窗口的最大值、 哈希表 有效的字母异位词、两数、三数之和、 递归/分治 pow(x,n)、求众数、 贪心 股票问题、 剪枝 n皇后、数独问题、 位运算 1的个数、2的次幂 并查集 岛屿个数、朋友圈 LRU 布隆过滤器
两数之和 (简单) 有效的括号 (简单) 字符串解码 (中等) LRU 缓存机制 (困难) 实现 Trie(前缀树) (中等) 添加与搜索单词 - 数据结构设计 (中等) 单词搜索 II (困难) 找不同 (简单) 单词规律 (简单) 字符串中的第一个唯一字符 (简单) 无重复字符的最长子串 (中等) 最小覆盖子串 (困难) 合并两个有序链表 (简单)
排序链表 两两交换链表中的节点 (中等) 按奇偶排序数组 (简单) 按奇偶排序数组 II (简单) 有序数组的平方 (简单) 山脉数组的峰顶索引 (简单) 搜索旋转排序数组 (困难) 搜索旋转排序数组 II (中等) 寻找旋转排序数组中的最小值 (中等) 寻找旋转排序数组中的最小值 II (困难) 搜索二维矩阵 (中等) 等式方程的可满足性 (中等) 朋友圈 (中等) 账户合并 (中等)
深度优先搜索
二叉树的最大深度 (简单) 路径总和 (简单) 路径总和 II (中等) 被围绕的区域 (中等) 岛屿数量 (中等) 岛屿的最大面积 (中等) 在二叉树中分配硬币 (中等)
回溯
括号生成 (中等) N 皇后 (困难) N 皇后 II (困难) 解数独 (中等) 不同路径 III (困难) 单词搜索 (中等)
分治
搜索二维矩阵 II (中等) 合并K个排序链表 (中等) 为运算表达式设计优先级 (中等) 给表达式添加运算符 (困难) 数组中的第K个最大元素 (中等) 最接近原点的 K 个点 (中等) 鸡蛋掉落 (困难)
动态规划
使用最小花费爬楼梯 (简单) 爬楼梯 (简单) 不同路径 (简单) 最小路径和 (中等) 最大子序和 (简单) 乘积最大子数组 (中等) 买卖股票的最佳时机 (简单) 买卖股票的最佳时机 II (简单) 买卖股票的最佳时机 III (困难) 买卖股票的最佳时机 IV (困难) 最佳买卖股票时机含冷冻期 (中等) 买卖股票的最佳时机含手续费 (中等) 零钱兑换 (中等) 零钱兑换 II (中等) 编辑距离 (困难) 不同的子序列 (困难) 柱状图中最大的矩形 (困难) 最大矩形 (困难) 最大正方形 (中等) 最低票价 (中等) 区域和检索 - 数组不可变 (简单) 二维区域和检索 - 矩阵不可变 (中等) 最长上升子序列 (中等) 鸡蛋掉落 (困难)
blind75
是力扣的一个题目列表,它最先由 Facebook
前工程师 Yangshun
发布在 blind
这个网站上,由于它几乎包含了求职面试中数据结构与算法所有必备的知识点,大大提高了准备面试的效率,迅速在blind
网站上爆火,blind75
由此得名。
blind75
中的题目整体难度偏中等以下,非常适合刚开始刷题的同学拿来入门,或者是不想在刷题上投入过多时间的同学,这个列表可以帮你达到事半功倍的效果。这里既提供了经典题目列表,还提供了对应的高质量题解,让刷题更有效率。
常用的数据结构: 数组、字符串、链表、二叉树、图、前缀树、集合、映射、栈、队列、堆blind75
都有覆盖。
常用的解题方法: 递归、迭代、二分法、回溯、贪心、动态规划、位运算、双指针、模拟、拓扑排序、桶排序、单调栈、深度优先搜索、广度优先搜索blind75
都有覆盖。
· https://leetcode-cn.com/problems/container-with-most-water/
· https://leetcode-cn.com/problems/move-zeroes/
· https://leetcode.com/problems/climbing-stairs/
· https://leetcode-cn.com/problems/3sum/ (高频老题)
栈和队列
· https://leetcode-cn.com/problems/largest-rectangle-in-histogram
· https://leetcode-cn.com/problems/sliding-window-maximum
· https://leetcode.com/problems/design-circular-deque
· https://leetcode.com/problems/trapping-rain-water/
树
· https://leetcode-cn.com/problems/binary-tree-preorder-traversal/
· https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal/
· https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/
· https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal/
· https://leetcode-cn.com/problems/lemonade-change/description/
· https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/description/
· https://leetcode-cn.com/problems/assign-cookies/description/
· https://leetcode-cn.com/problems/walking-robot-simulation/description/
· https://leetcode-cn.com/problems/jump-game/ 、 https://leetcode-cn.com/problems/jump-game-ii/
贪心:当下做局部最优判断
回溯:能够回退
动态规划:最优判断+回退
- \88. 合并两个有序数组,简单
- \240. 搜索二维矩阵 II,中等
- \54. 螺旋矩阵,中等
- \48. 旋转图像,中等
- \206. 反转链表,简单
- \25. K 个一组翻转链表,困难
- \141. 环形链表,简单
- \21. 合并两个有序链表,简单
- \160. 相交链表,简单
- \92. 反转链表 II,中等
- \23. 合并K个排序链表,困难
- \142. 环形链表 II,中等
- \143. 重排链表,中等
- 剑指 Offer 22. 链表中倒数第k个节点,简单
- \19. 删除链表的倒数第N个节点,中等
- \82. 删除排序链表中的重复元素 II,中等
- \2. 两数相加,中等
- \148. 排序链表,中等
- \234. 回文链表,简单
- \83. 删除排序链表中的重复元素,简单
- \138. 复制带随机指针的链表,中等
- \24. 两两交换链表中的节点,中等
前序遍历
- \144. 二叉树的前序遍历,简单
中序遍历
- \94. 二叉树的中序遍历,简单
层序遍历
- \102. 二叉树的层序遍历,中等
- \103. 二叉树的锯齿形层序遍历,中等
视图
- \199. 二叉树的右视图,中等
- \98. 验证二叉搜索树,中等
- 剑指 Offer 54. 二叉搜索树的第k大节点,简单
- \426. 将二叉搜索树转化为排序的双向链表,中等
- \104. 二叉树的最大深度,简单
- \110. 平衡二叉树,简单
- \543. 二叉树的直径,简单
- \101. 对称二叉树,简单
- \226. 翻转二叉树,简单
- \236. 二叉树的最近公共祖先,中等
- \112. 路径总和,简单
- \124. 二叉树中的最大路径和,困难
- \105. 从前序与中序遍历序列构造二叉树,中等
- \20. 有效的括号,简单
- \42. 接雨水,困难
- \232. 用栈实现队列,简单
- \155. 最小栈,简单
- \227. 基本计算器 II,中等
- \146. LRU缓存机制,中等
- \1. 两数之和,简单
- \15. 三数之和,中等
- \41. 缺失的第一个正数,困难
- \169. 多数元素,简单
- \128. 最长连续序列,中等
- \415. 字符串相加,简单
- \8. 字符串转换整数 (atoi),中等
- \151. 翻转字符串里的单词,中等
- \43. 字符串相乘,中等
- \468. 验证IP地址,中等
- \14. 最长公共前缀,简单
- \394. 字符串解码,中等
- \215. 数组中的第K个最大元素,中等
- \704. 二分查找,容易
- \33. 搜索旋转排序数组,中等
- \69. Sqrt(x),简单
- \4. 寻找两个正序数组的中位数,困难
- \34. 在排序数组中查找元素的第一个和最后一个位置,中等
- \153. 寻找旋转排序数组中的最小值,中等
- \162. 寻找峰值,中等
- \912. 快速排序,中等
- \912. 归并排序,中等
- \912. 堆排序,中等
- \56. 合并区间,中等
- \179. 最大数,中等
- \200. 岛屿数量,中等
- \129. 求根节点到叶节点数字之和,中等
- \695. 岛屿的最大面积,中等
- \958. 二叉树的完全性检验,中等
- \136. 只出现一次的数字,简单
- \31. 下一个排列,中等
- \165. 比较版本号,中等
- \3. 无重复字符的最长子串,中等
- \76. 最小覆盖子串,困难
- \239. 滑动窗口最大值,困难
- \46. 全排列,中等
- \93. 复原 IP 地址,中等
- \113. 路径总和 II,中等
- \78. 子集,中等
- \22. 括号生成,中等
- \39. 组合总和,中等
- \53. 最大子数组和,简单
- \121. 买卖股票的最佳时机,简单
- \122. 买卖股票的最佳时机 II,中等
- \5. 最长回文子串,中等
- \300. 最长递增子序列,中等
- \70. 爬楼梯,简单
- \72. 编辑距离,困难
- \1143. 最长公共子序列,中等
- \718. 最长重复子数组,中等
- \322. 零钱兑换,中等
- \32. 最长有效括号,困难
- \64. 最小路径和,中等
- \62. 不同路径,中等
- \221. 最大正方形,中等
- \198. 打家劫舍,中等
- \470. 用 Rand7() 实现 Rand10(),中等