Learning and inspired from @labuladong!! 👍
/examples
|
|
|
+---BFS算法
| +---BFS
| | +---111. 二叉树的最小深度
| | \---752. 打开转盘锁
| \---BFS:寻路搜索
| \---773. 滑动谜题
+---DFS算法、回溯算法
| +---DFS:岛屿问题
| | +---1020. 飞地的数量
| | +---1254. 统计封闭岛屿的数目
| | +---1905. 统计子岛屿
| | +---200. 岛屿数量
| | +---694. 不同岛屿的数量
| | \---695. 岛屿的最大面积
| +---回溯算法
| | +---46. 全排列
| | \---51. N 皇后
| +---回溯算法:子集、排列、组合问题
| | +---39. 组合总和
| | +---40. 组合总和 II
| | +---46. 全排列
| | +---47. 全排列 II
| | +---77. 组合
| | +---78. 子集
| | +---90. 子集 II
| | +---总结
| | \---排列(元素无重可复选)
| \---回溯算法:集合划分问题
| \---698. 划分为k个相等的子集
+---二叉搜索树
| +---二叉搜索子树的最大键值和
| | \---1373. 二叉搜索子树的最大键值和
| +---二叉搜索树 I
| | +---1038. 从二叉搜索树到更大和树(同538)
| | +---230. 二叉搜索树中第K小的元素
| | \---538. 把二叉搜索树转换为累加树
| +---二叉搜索树 II
| | +---450. 删除二叉搜索树中的节点
| | +---700. 二叉搜索树中的搜索
| | +---701. 二叉搜索树中的插入操作
| | \---98. 验证二叉搜索树
| \---二叉搜索树 III
| +---95. 不同的二叉搜索树 II
| \---96. 不同的二叉搜索树
+---二叉树
| +---二叉树 I
| | +---114. Flatten Binary Tree to Linked List
| | +---116. Populating Next Right Pointers in Each Node
| | \---226. Invert Binary Tree
| +---二叉树 II
| | +---105. Construct Binary Tree from Preorder and Inorder Traversal
| | +---106. Construct Binary Tree from Inorder and Postorder Traversal
| | \---654. Maximum Binary Tree
| +---二叉树 III
| | \---652. Find Duplicate Subtrees
| +---二叉树序列化
| | \---297. 二叉树的序列化与反序列化
| \---二叉树总结篇
| +---104. 二叉树的最大深度
| +---144. 二叉树的前序遍历
| \---543. 二叉树的直径
+---动态规划
| +---动态规划核心原理
| | +---初识动态规划
| | | +---322. 零钱兑换
| | | \---509. 斐波那契数
| | +---动态规划:dp函数解法和dp数组解法
| | | \---931. 下降路径最小和
| | \---动态规划:最优子结构和dp数组遍历
| +---动态规划玩游戏
| | +---加权最短路径
| | | \---787. K站中转内最便宜的航班
| | +---博弈问题
| | | +---877. 石子游戏
| | | \---石子游戏改进
| | +---圆盘问题
| | | \---514. 自由之路
| | +---地下城问题
| | | \---174. 地下城游戏
| | +---打家劫舍问题
| | | +---198. 打家劫舍
| | | +---213. 打家劫舍 II
| | | \---337. 打家劫舍 III
| | +---最小路径和
| | | \---64. 最小路径和
| | +---股票买卖问题
| | | +---121. 买卖股票的最佳时机
| | | +---122. 买卖股票的最佳时机 II
| | | +---123. 买卖股票的最佳时机 III
| | | +---188. 买卖股票的最佳时机 IV
| | | +---309. 最佳买卖股票时机含冷冻期
| | | \---714. 买卖股票的最佳时机含手续费
| | \---高楼扔鸡蛋
| | \---887. 鸡蛋掉落
| +---经典动态规划
| | +---最大子数组和问题
| | | \---53. 最大子数组和
| | +---最长公共子序列 (Longest Common Subsequence)
| | | +---1143. 最长公共子序列
| | | +---583. 两个字符串的删除操作
| | | \---712. 两个字符串的最小ASCII删除和
| | +---最长递增子序列 (Longest Incresing Subsequence)
| | | \---300. 最长递增子序列
| | +---正则表达式问题
| | | \---10. 正则表达式匹配
| | \---编辑距离问题
| | \---72. 编辑距离
| \---背包问题
| +---0-1背包问题
| | \---0-1背包问题
| +---子集背包问题
| | \---416. 分割等和子集
| \---完全背包问题
| \---518. 零钱兑换 II
+---图论
| +---Dijkstra算法
| | +---1514. 概率最大的路径
| | +---1631. 最小体力消耗路径
| | \---743. 网络延迟时间
| +---Kruskal最小生成树算法
| | +---1135. 最低成本联通所有城市
| | +---1584. 连接所有点的最小费用
| | \---261. 以图判树
| +---Union-Find算法应用
| | +---130. 被围绕的区域
| | \---990. 等式方程的可满足性
| +---Union-Find(并查集算法)
| | \---323. 无向图中连通分量的数目
| +---二分图判定
| | +---785. 判断二分图
| | \---886. 可能的二分法
| +---名流问题
| | \---277. 搜索名人
| +---图论基础
| | \---797. 所有可能的路径
| \---拓扑排序
| +---207. 课程表
| \---210. 课程表 II
+---数学算法
| +---吃葡萄
| | \---牛客:吃葡萄
| +---同时寻找缺失和重复元素
| | \---645. 错误的集合
| +---寻找素数
| | \---204. 计数质数
| +---无限序列中随机抽取元素
| | +---382. 链表随机节点
| | \---398. 随机数索引
| \---阶乘后的零
| +---172. 阶乘后的零
| \---793. 阶乘函数后 K 个零
+---数据结构设计
| +---LFU (Least Frequently Used cache)
| | \---460. LFU Cache
| +---LRU (Least Recently Used cache)
| | \---146. LRU Cache
| +---大顶堆和小顶堆
| | \---295. Find Median from Data Stream
| \---常数时间查找、删除数组元素
| +---380. Insert Delete GetRandom O(1)
| \---710. Random Pick with Blacklist
+---数组、链表
| +---二分搜索
| | +---34. Find First and Last Position of Element in Sorted Array
| | \---704. Binary Search
| +---二分搜索单调函数
| | +---1011. Capacity To Ship Packages Within D Days
| | +---410. 分割数组的最大值
| | \---875. Koko Eating Bananas
| +---前缀和数组
| | +---303. Range Sum Query - Immutable
| | +---304. Range Sum Query 2D - Immutable
| | \---560. Subarray Sum Equals K
| +---单链表
| | +---141. Linked List Cycle
| | +---142. Linked List Cycle II
| | +---160. Intersection of Two Linked Lists
| | +---19. Remove Nth Node From End of List
| | +---21. Merge Two Sorted Lists
| | +---23. Merge k Sorted Lists
| | \---876. Middle of the Linked List
| +---原地修改数组
| | +---26. Remove Duplicates from Sorted Array
| | +---27. Remove Element
| | +---283. Move Zeroes
| | \---83. Remove Duplicates from Sorted List
| +---差分数组
| | +---1094. Car Pooling
| | +---1109. Corporate Flight Bookings
| | \---307. Range Sum Query - Mutable
| +---滑动窗?算法
| | +---3. Longest Substring Without Repeating Characters
| | +---438. Find All Anagrams in a String
| | +---567. Permutation in String
| | \---76. Minimum Window Substring
| +---田忌赛马优势洗牌
| | \---870. Advantage Shuffle
| \---链表递归操作
| +---206. Reverse Linked List
| \---92. Reverse Linked List II
+---队列、栈
| +---下一个更大元素题目(单调栈)
| | +---496. Next Greater Element I
| | +---503. Next Greater Element II
| | \---739. Daily Temperatures
| +---单调栈解决数组去重
| | +---1081. Smallest Subsequence of Distinct Characters
| | \---316. Remove Duplicate Letters
| +---单调队列
| | \---239. Sliding Window Maximum
| +---括号题目
| | +---1541. Minimum Insertions to Balance a Parentheses String
| | +---20. Valid Parentheses
| | \---921. Minimum Add to Make Parentheses Valid
| \---队列与栈的相互实现
| +---225. Implement Stack using Queues
| \---232. Implement Queue using Stacks
\---面试必知必会
+---nSum问题
| +---1. 两数之和
| +---15. 三数之和
| \---18. 四数之和
+---分治算法
| \---241. 为运算表达式设计优先级
+---区间问题
| +---1288. 删除被覆盖区间
| +---253. 会议室II
| +---56. 合并区间
| \---986. 区间列表的交集
+---完美矩形
| \---391. 完美矩形
+---快速选择算法(Quick Select)
| \---215. 数组中的第K个最大元素
+---斗地主
| \---659. 分割数组为连续子序列
+---计算器实现
| +---224. 基本计算器
| +---227. 基本计算器 II
| \---772. 基本计算器 III
\---贪心算法
+---1024. 视频拼接
\---134. 加油站