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