大厂面试 高频 数据结构 & 算法题 【top 200】 大汇总

其中 ⭐ 个数表示出现频率高低

一、 排序算法 & 查找 & top k

  1. 快速排序
  2. 堆排序
  3. 【剑指 Offer】 40. 最小的k个数
  4. 【LeetCode】215. 数组中的第K个最大元素 ⭐⭐⭐⭐⭐⭐
  5. 【LeetCode】347. 前 K 个高频元素 ⭐
  6. 【leetCode】704. 二分查找 ⭐⭐

二、二叉树

  1. 【LeetCode】二叉树各种遍历大汇总(秒杀前序、中序、后序、层序 )递归 & 迭代 ⭐⭐⭐⭐⭐
  2. [【剑指offer】33. 二叉搜索树的后续遍历]
  3. 【LeetCode】105. 从前序与中序遍历序列构造二叉树 ⭐⭐⭐
  4. 【LeetCode】572. 另一个树的子树
  5. 【LeetCode】104. 二叉树的最大深度 ⭐⭐⭐
  6. [【LeetCode】111. 二叉树的最小深度 ⭐ ]
  7. [【LeetCode】662. 二叉树的最大宽度 ]
  8. 【LeetCode】124. 二叉树中的最大路径和(困难) ⭐⭐⭐⭐
  9. 【LeetCode】543. 二叉树的直径(任意两节点间最大长度) ⭐⭐⭐⭐⭐
  10. 【LeetCode】110. 平衡二叉树 ⭐⭐⭐⭐
  11. 【LeetCode】297. 二叉树的序列化与反序列化 ⭐⭐⭐
  12. 【LeetCode】226.翻转二叉树 (同 : 剑指 Offer 27. 二叉树的镜像 ) ⭐⭐⭐⭐⭐
  13. 【LeetCode】235. 二叉搜索树的最近公共祖先
  14. 【LeetCode】236. 二叉树的最近公共祖先 ⭐⭐⭐⭐(普通二叉树,不一定是二叉搜索树)
  15. 【LeetCode】103. 二叉树的锯齿形层次遍历 ⭐
  16. 【LeetCode】814. 二叉树剪枝
  17. 【LeetCode】199. 二叉树的右视图 ⭐⭐⭐⭐
  18. 【LeetCode】112. 路径总和 ⭐⭐⭐(二叉树是否存在和为 target的路径) & 113. 路径总和 II ⭐⭐(找到所有满足的路径)& 437. 路径总和 III
  19. [【LeetCode】958. 二叉树的完全性检验 ⭐⭐⭐]
  20. [【LeetCode】108. 将有序数组转换为二叉搜索树 ⭐]
  21. [【LeetCode】101. 对称二叉树 ⭐]
  22. [【剑指offer】54. 二叉搜索树的第 k 大节点 ⭐⭐]
  23. [【剑指offer】34. 二叉树中和为某一值的路径 ]
  24. [【剑指offer】32-III. 从上到下打印二叉树 III ⭐]
  25. [【LeetCode】100. 相同的树]
  26. [【LeetCode】515. 在每个树行中找最大值 ]
  27. [【LeetCode】230. 二叉搜索树中的第 k 小元素]
  28. [【剑指offer】36. 二叉搜索树与双向链表⭐ ]
  29. [【LeetCode】129. 求根到叶子节点数字之和 ⭐ ]
  30. [【剑指offer】07. 重建二叉树 ]
  31. [【LeetCode】257. 二叉树的所有路径 ⭐ ]
  32. [【LeetCode】222. 完全二叉树的节点个数]
  33. [【LeetCode】98. 验证二叉搜索树]
  34. [【LeetCode】450. 删除二叉搜索树中的节点 ]
  35. [【leetCode】1325. 删除给定值的叶子节点]
  36. [【leetCode】208. 实现 Trie (前缀树) ]
  37. [【LeetCode】99. 恢复二叉搜索树 ]

三、链表

  1. 【LeetCode】141 环形链表 I, ⭐⭐⭐ 142. 环形链表 II(双指针 中学追及问题) ⭐
  2. 【LeetCode 】160. 相交链表 ⭐⭐⭐⭐
  3. 【LeetCode 】234. 回文链表 ⭐⭐
  4. 【LeetCode 】876. 链表的中间结点 ⭐
  5. 【LeetCode 】19. 删除链表的倒数第N个节点
  6. [【剑指offer】22. 链表中倒数第k个节点 ⭐⭐]
  7. 【LeetCode】206. 反转链表 ⭐⭐⭐⭐⭐⭐
  8. [【LeetCode】92. 反转链表 II ]
  9. [【LeetCode】82. 删除排序链表中的重复元素 II ⭐⭐⭐]
  10. 【LeetCode】83. 删除排序链表中的重复元素(保留或者不保留) ⭐⭐⭐⭐
  11. 【LeetCode】2. 两数相加 ⭐⭐⭐⭐(链表逆序存储 & 445. 两数相加 II(链表正序: 栈)
  12. 【LeetCode】21. 合并两个有序链表(简单) ⭐⭐⭐⭐
  13. 【LeetCode】23. 合并K个排序链表(困难)⭐⭐
  14. 【LeetCode】25. K 个一组翻转链表 ⭐⭐⭐⭐⭐⭐
  15. [【剑指offer】52. 两个链表的第一个公共节点 ⭐]
  16. [【剑指offer】21. 调整数组顺序使奇数位于偶数前面 ⭐⭐]
  17. [【LeetCode】143. 重排链表 ⭐⭐ ]
  18. [【LeetCode】328. 奇偶链表 ⭐ ]
  19. [【LeetCode】86. 分隔链表 ⭐⭐⭐ ]

四、数 & 数组 & 矩形 & 指针

  1. 【LeetCode】84. 柱状图中最大的矩形(单调栈)
  2. 【LeetCode】85. 最大矩形(hard)
  3. [【LeetCode】221. 最大正方形 ]
  4. 【LeetCode】33. 搜索旋转排序数组(查找目标值) ⭐⭐⭐ & 189. 旋转数组 (将数组中的元素向右移动 k 个位置) ⭐⭐
  5. 【剑指 Offer】 29. 顺时针打印矩阵 (与 54. 螺旋矩阵 相同)⭐⭐⭐
  6. 【LeetCode】4. 寻找两个正序数组的中位数【困难】⭐
  7. 【LeetCode】41. 缺失的第一个正数 ⭐⭐
  8. [【LeetCode】268. 缺失数字 ]
  9. [【LeetCode】448. 找到所有数组中消失的数字 ]
  10. 【leetCode】15. 三数之和 = 0(排序 + 双指针)⭐⭐⭐⭐ & 1.两数之和 = target ⭐⭐⭐⭐
  11. 【LeetCode】16.最接近目标和的三数之和
  12. [【leetCode】628. 三个数的最大乘积 ⭐]
  13. [【leetCode】658. 找到 K 个最接近的元素]
  14. 【LeetCode】88. 合并两个有序数组 ⭐⭐⭐⭐⭐
  15. 【LeetCode】7. 整数反转 ⭐
  16. 【LeetCode】11.盛最多水的容器(数组+双指针)
  17. 【LeetCode】26.删除排序数组中的重复项目(数组+双指针)⭐
  18. 【LeetCode】46.全排列(回溯算法)⭐
  19. [【LeetCode】47.全排列 II ]
  20. 【LeetCode】287.寻找重复数
  21. 【LeetCode】166. 分数到小数 ⭐
  22. 【LeetCode】842. 将数组拆分成斐波那契序列(回溯)
  23. [【LeetCode】209. 长度最小的子数组 ⭐⭐]
  24. 【LeetCode】56. 合并区间 ⭐⭐⭐⭐
  25. [【LeetCode】283. 移动零(简单) ⭐⭐]
  26. [【LeetCode】179. 最大数 ⭐⭐⭐]
  27. [【LeetCode】169. 多数元素 ⭐]
  28. [【剑指offer】42. 连续子数组的最大和 ⭐⭐]
  29. [【LeetCode】162. 寻找峰值 ⭐⭐]
  30. [【LeetCode】78. 子集 ⭐⭐]
  31. [【LeetCode】42. 接雨水 ⭐]
  32. [【剑指offer】11. 旋转数组中的最小数字 ⭐]
  33. [【LeetCode】240. 搜索二维矩阵 II ⭐⭐⭐]
  34. [【LeetCode】560. 和为 k 的子数组]
  35. [【LeetCode】9. 回文数 ]
  36. [【LeetCode】862. 和至少为 k 的最短子数组(困难)]
  37. [【LeetCode】349. 两个数组的交集 ]
  38. [【LeetCode】350. 两个数组的交集 II ⭐ ]
  39. [【LeetCode】31. 下一个排列]
  40. [【剑指offer】39. 数组中出现次数超过一半的数字 ⭐⭐]
  41. [【LeetCode】503. 下一个更大的元素 II ]
  42. [【LeetCode】480. 滑动窗口中位数]
  43. [【LeetCode】1299. 将每个元素替换为右侧最大元素]
  44. [【剑指offer】41. 数据流中的中位数 ]
  45. [【LeetCode】977. 有序数组的平方]
  46. [【LeetCode】69. x 的平方根]
  47. [【剑指offer】45. 把数组排成最小的数]
  48. [【LeetCode】562.矩阵中最长的连续1线段 ]
  49. [【LeetCode】40. 组合总和]
  50. [【LeetCode】560. 和为K的子数组]
  51. [【leetCode】442. 数组中重复的数据]
  52. [【leetCode】239. 滑动窗口最大值]
  53. [【剑指offer】21. 调整数组顺序使奇数位于偶数前面 ⭐]

五、DFS、BFS、栈、队列

  1. 【LeetCode】200. 岛屿数量 ⭐⭐⭐& 695.岛屿最大面积

  2. [【LeetCode】1254. 统计封闭岛屿的数目 ⭐]

  3. 【LeetCode】155. 最小栈 (使用辅助栈)⭐& 面试题 03.05. 栈排序 ⭐⭐(手写 push、pop )

  4. 【剑指offer】09. 用两个栈实现队列 ⭐⭐⭐

  5. [【LeetCode】232. 用栈实现队列 ⭐ ]

  6. [【LeetCode】225. 用队列 ]

  7. [【LeetCode】994. 腐烂的橘子]

六、动态规划 & 子序 & 子串

  1. 【LeetCode】509. 斐波那契数 ⭐

  2. [【LeetCode】70. 爬楼梯 ⭐⭐]

  3. 0-1背包问题详解

  4. 【LeetCode】 300. 最长上升子序列 ⭐

  5. [【leetCode】5. 最长回文子串 ]

  6. [【leetCode】674. 最长连续递增序列]

  7. 【LeetCode】1143. 最长公共子序列 ⭐⭐

  8. 【LeetCode】72. 编辑距离 ⭐

  9. 【LeetCode 】213. 打家劫舍II

  10. 【LeetCode 】416. 分割等和子集(使得两个子集的元素和相等)

  11. 【LeetCode 】494. 目标和 ( + 和 - 操作得到 target)

  12. LeetCode 】279. 完全平方数(最少的完全平方数之和等于 n)

  13. 【LeetCode】62. 不同路径(动态规划)⭐⭐

  14. LeetCode】63. 不同路径 II(有障碍物时)(动态规划)

  15. [【LeetCode】64. 最小路径和 ]

  16. 【LeetCode】121. 买卖股票的最佳时机 ⭐⭐⭐

  17. [【LeetCode】122. 买卖股票的最佳时机 II ]

  18. 【LeetCode】53.最大子序和 ⭐⭐

  19. 【LeetCode】673.最长递增子序列的个数(可不连续)& 674. 最长递增子序列的长度

  20. 【LeetCode】322. 零钱兑换 & 518. 零钱兑换 II ⭐⭐

  21. [【LeetCode】128. 最长连续序列 ⭐⭐]

  22. [【LeetCode】76. 最小覆盖字串 ]

  23. [【LeetCode】316. 去除重复字母]

七、字符串

  1. No. 1143 【LintCode 最长AB子串 O(N)复杂度 解法】
  2. 【LeetCode】3. 无重复字符的最长子串 ⭐⭐⭐⭐
  3. 【LeetCode】394. 字符串解码 ⭐⭐
  4. 【LeetCode】8. 字符串转换整数 (atoi)
  5. [【LeetCode】344. 反转字符串 ⭐⭐⭐]
  6. [【LeetCode】796. 旋转字符串 ]
  7. [【LeetCode】415. 字符串相加 ⭐⭐⭐]
  8. [【leetCode】151. 翻转字符串里的单词 ⭐]
  9. [【leetCode】557. 反转字符串里的单词 III ⭐]
  10. [【LeetCode】14. (字符串)最长公共前缀]
  11. [【剑指offer】38. 字符串的排列]
  12. [【LeetCode】1147. 段式回文(困难)]
  13. [【LeetCode】139. 单词拆分 ⭐ ]
  14. [【LeetCode】140. 单词拆分 II(困难)⭐]
  15. [【剑指offer】48. 最长不含重复字符的子字符串 ⭐ ]
  16. [【LeetCode】680. 验证回文字符串 II ]

九、位运算 & CPU逻辑 & 括号 & 进制 & 正则式 等

  1. 【LeetCode】231. 2的幂 ——判断一个数是不是2的整数次幂
  2. 【LeetCode】136. 只出现一次的数字(异或运算秒杀)⭐⭐
  3. 【剑指 Offer】 15. 二进制中1的个数
  4. 【LeetCode】636. 函数的独占时间
  5. 【LeetCode】146. LRU缓存机制 ⭐⭐⭐
  6. [【LeetCode】20. 有效的括号 ⭐⭐⭐]
  7. [【LeetCode】32. 最长有效括号]
  8. [【LeetCode】22. 括号生成 ]
  9. [【LeetCode】460. LFU 缓存 ⭐⭐]
  10. [【LeetCode】190. 颠倒二进制位 ⭐⭐]
  11. [【LeetCode】93. 复原 IP 地址 ⭐]
  12. [【LeetCode】468. 验证 IP 地址 ]
  13. [【LeetCode】405. 数字转换为十六进制数]
  14. [【leetCode】165. 比较版本号 ]
  15. [【LeetCode】67. 二进制求和 ⭐]

八、扑克牌 & 麻将 等游戏规则类

  1. [【剑指offer】61. 扑克牌中的顺子 ⭐]
  2. [【LeetCode】1201. 丑数 III ⭐]
  3. [【LeetCode】51. N 皇后(困难)]

九、结合项目(逻辑回归、SVM、FFT等)

  1. 【超详细公式推导】关于交叉熵损失函数(Cross-entropy)和 平方损失(MSE)的区别
  2. 李宏毅深度强化学习笔记(一)Proximal Policy Optimization (PPO)
  3. 李宏毅深度强化学习笔记(二)Imitation Learning
  4. 傅里叶变换公式及其推导【超详细!】
  5. [卷积、池化的作用和区别]
  6. BN和Dropout在训练和测试时的差别 ⭐⭐⭐⭐⭐
    大厂面试 高频 数据结构 & 算法题 【top 200】 大汇总_第1张图片
    C o n v = > B N = > R e L U = > d r o p o u t = > C o n v Conv => BN =>ReLU => dropout => Conv Conv=>BN=>ReLU=>dropout=>Conv

你可能感兴趣的:(算法,python,数据结构)