算法和数据结构 知识结构图
首先,了解算法和数据结构有哪些知识点,在学习中形成 大局观,对学习和刷题十分有帮助。
下面是我花了一天时间整理的算法和数据结构的知识结构,大家可以看看。
后面是为大家 精心挑选的LeetCode题单,并根据题目知识点的类型分好了类别,大家可以根据每个知识点,进行有针对性的刷题。
数据结构
数组&双指针
链表
队列&栈
哈希表
二叉树
二叉搜索树
算法
模拟
贪心
- LeetCode 11. 盛最多水的容器
- LeetCode 714. 买卖股票的最佳时机含手续费
- LeetCode 122. 买卖股票的最佳时机 II
- LeetCode 55. 跳跃游戏
- LeetCode 309. 最佳买卖股票时机含冷冻期
- LeetCode 406. 根据身高重建队列
二分
递归&回溯
深度优先搜索DFS
宽度优先搜索BFS
分治
排序算法
Manacher算法
字典树Trie
动态规划
最短路算法
最小生成树
拓扑排序
并查集
我把学习 算法和数据结构和计算机核心的书籍 都整理好了,在学习计算机的路上肯定能用到,身边的同学都在看,现在免费送给大家,可以从下面链接领取。
书单
https://mp.weixin.qq.com/s/vtIjAQQdEik2A7NCIamSqA
下面讲一下如何刷题。
如何正确的做一道题
- 从简入手: 先从简单暴力(时间复杂度高)的方法入手。
- 优化: 思考如何在第一步的基础上,如何优化算法,降低时间复杂度。
- 构思代码: 有了以上两步,我们此时应该已经有了一个正确的想法,此时我们应该构思代码,有那几部分,每部分实现什么功能,代码怎么写。而不是直接闷头去写代码,因为很多时候没想清楚,直接去写代码,会导致写了一半发现思路不对,写的代码都是错误的。
- 写代码: 实现第三步代码。
- (Debug): 如果我们的题目没有通过测试,应该检查代码是不是有bug、思路对不对等。
- 总结与反思: 题目通过了,我们应该总结一下这道题考察的知识点、切入的角度、同类型的题目等,同时思考有没有更优的办法。
做到以上几点,一道题学习的就很透了,遇到同类型的题目可以举一反三啦。
最后
我是编程熊,字节跳动、旷视科技前员工、ACM金牌选手。
微信搜索【一只编程熊】,获取 学习资源、面试、内推交流群。