极客时间算法学习之后开始跟着花花酱刷题。大概从4月份开始的。从今天开始(2020-8-24)开始做总结,复习一下已经刷过的题目。到目前为止leetcode刷题323道。
2020/8/24 完成题目整理,下一步是将每个题目都加上超链接。这个超链接尽可能都指向csdn的博客。
2020/10/23 完成12个题目完成了散列表。进度有点蜗速。大多数题目不能做到看一眼就知道解法,仿佛之前做的全忘记了。但是一看答案,就回想起当时自己做题的情景了。继续。
2020/11/5 完成二叉树、跳表、字符串部分。二叉树部分有些代码没写,只是看了看。跳表好早就想动手写一写。字符串部分也是好早就想综合复习一下。
2020/11/14完成了图的部分。数据结构部分的习题完成。开始算法部分的习题。
2020/11/30完成了二分。
2020/12/18 回溯算法刷起来相对简单一些,hard题目需要再刷一次
2020/12/24 回溯算法刷完
2021/1/2 动态规划刷完。发现在处理字符串的动态规划问题的还是会有些理解不了的地方。本文章更新完毕。
文章目录
- 1刷题原则
- 2 数据结构题目整理
- 2.1 数组
- 2.2链表
- 2.3 栈
- 2.4 队列
- 2.5 散列表
- 2.6 二叉树
- 2.7 堆
- 2.8 跳表
- 2.9 图
- 2.10 Trie树
- 3 算法题目整理
- 3.1 排序
- 3.2 二分
- 3.3 搜索(BFS、DFS)/回溯
- 3.4 哈希
- 3.5 贪心
- 3.6 分治
- 3.7 动态规划
- 3.8 字符串匹配
1刷题原则
根据花花酱建议,梳理出以下结论。
要刷多少题
1 每个类型 10-20,总共200-300题
如何刷题
1 同类型题目一起刷
2 看代码很重要,看至少3-5种不同实现
3 第一遍:5分钟想不出来就看答案;第二遍:尝试不看答案完整实现,一道题目不超过60min;第三遍:尝试快速实现,15-20min实现不了就看答案
4 完整的手写代码,增强肌肉记忆
5 培养代码风格
2 数据结构题目整理
根据刷题原则这是我第二次刷题。其实算上以前断断续续的,算三刷也不为过。
这次题目整理会把之前在极客时间算法题目中的课后题目和这次刷的题目一起整理一下。这部分整理数据结构的题目。
2.1 数组
- 15 3sum
- 169 Majority Element
- 41 Missing Positive
2.2链表
- 141 LinkedListCycle I
- 23 Merge k sorted lists
2.3 栈
- 20 Valid Parentheses
- 32 Longest Valid Parentheses
- 150 Evaluate Reverse Polish Notatio
2.4 队列
- 641 Design Circular Deque
- 239 Sliding Window Maximum
2.5 散列表
实现一个基于链表法解决冲突问题的散列表
实现一个 LRU 缓存淘汰算法
2.6 二叉树
实现一个二叉查找树,并且支持插入、删除、查找操作
实现查找二叉查找树中某个节点的后继、前驱节点
实现二叉树前、中、后序以及按层遍历
Invert Binary Tree
Maximum Depth of Binary Tree
Validate Binary Search Tree
Path Sum
2.7 堆
实现一个小顶堆、大顶堆(堆结构描述)、优先级队列
实现堆排序利用优先级队列
合并 K 个有序数组
求一组动态数据集合的最大 Top K
2.8 跳表
跳表的实现(参考小灰)
2.9 图
实现有向图、无向图、有权图、无权图的邻接矩阵和邻接表表示方法
实现图的深度优先搜索、广度优先搜索
实现 Dijkstra 算法、A* 算法
实现拓扑排序的 Kahn 算法、DFS 算法
2.10 Trie树
- 只包含 a~z 这 26 个英文字母的 Trie 树
3 算法题目整理
3.1 排序
1 排序:实现归并排序、快速排序、插入排序、冒泡排序、选择排序
2 编程实现 O(n) 时间复杂度内找到一组数据的第 K 大元素
3 还要记得有桶排序、计数排序
3.2 二分
- 35 Search Insert Position
相似题目:34、704、981
tag:upper_bound - 33 Search in Rotated Sorted Array
相似题目:81、153、154、162、852
tag:rotated;peek - 69 Sqrt(x)
tag:upper_bound - 74 Search a 2D Matrix
- 875 Koko Eating Bananas
相似题目:1011
tag:guess ans and check - 4 Median of Two Sorted Arrays
- 378 Kth Smallest Element in a Sorted Matrix
相似题目:668
tag:k-th+matrix 对数组中的值做二分,也有guess and check的感觉 - 719 Find K-th Smallest Pair Distance
相似题目:786
tag:k-th+two pointers
3.3 搜索(BFS、DFS)/回溯
- 17 Letter Combinations of a Phone Number
相似题目:39、40、77、78、90、216
tag:组合 - 46 Permutations
相似题目:47、784、943、996
tag:排列 - 22 Generate Parentheses
相似题目 301
tag:DFS - 37 Sudoku Solver
相似题目:51 52
tag:DFS - 79 Word Search
相似题目:212
tag:DFS - 127 Word Ladder
相似题目:126、752、818
tag:BFS - 542 01 Matrix
相似题目:675、934
tag:BFS - 698 Partition to K Equal Sum Subsets
相似题目:93、131、241、282、842
tag:排列
3.4 哈希
3.5 贪心
3.6 分治
- 169 Majority Element
- 153 Find Minimum in Rotated Sorted Array
相似题目 154 - 912 Sort and Array
- 315 Count of Smaller Numbers After Self
3.7 动态规划
- 70 Climbing Stairs 相似题目:746、1137
- 303 Range Sum Query – Immutable 相似题目:1218
- 53 Maximum Subarray 相似题目:121
- 62 Unique Paths 相似题目:63、64、120、174、931、1210
- 85 Maximal Rectangle 相似题目:221、304、1277
- 198 House Robber 相似题目:213、309、740、790、801
- 279 Perfect Squares 相似题目:
- 139 Word Break 相似题目 140、818
- 300 Longest Increasing Subsequence 相似题目:673、1048
- 最小路径和(详细可看 @Smallfly 整理的 Minimum Path Sum)
- 编程实现莱文斯坦最短编辑距离
- 编程实现查找两个字符串的最长公共子序列
3.8 字符串匹配
- 344 Reverse String
- 151 Reverse Words in a String
- 8 String to Integer (atoi)
- KMP
- AC自动机
AC介绍
AC自动机就是多模式匹配的kmp,文章没有详细看,抄来的代码跑一跑。