很简单,打开 LintCode 随便找一道中等难度的题,如果能很快找到思路并提交代码通过,那么BAT公司的笔试编程题基本没什么问题了。(唯一需要注意的是国内公司笔试题目一般都很长,比较考验阅读理解能力倒是真的)
不过LintCode上动辄1000多道题,中等难度的题少说也有500+,想要刷完显然是不现实的。所以很多同学会问怎么刷题最高效?
要解决这个问题,首先要搞清楚企业笔试面试都会考些啥。算法和数据结构看起来要学的东西很多,其实笔面试中出现的知识点就那么多。
算法
字符串处理 String
排序算法 Sorting
双指针算法 Two Pointers
二分法 Binary Search
分治法 Divide & Conquer
宽度优先搜索 BFS
深度优先搜索 DFS / 递归 Recursion
二叉树的遍历算法 Traversal
动态规划 Dynamic Programming
拓扑排序算法 Topological Order
数据结构
链表 LinkedList
二叉树 Binary Search
堆 Heap
哈希表 Hash Table
线段树 Segment Tree
树状数组 Binary Indexed Tree
跳跃表 Skip List
字典树 Trie
并查集 Union Find
红黑树 RB-Tree
至于这些知识点具体怎么考,考察频率如何,需要刷多少题才能hold住等问题,令狐老师在《九章算法班》中有非常详细的讲解,这里放一张图大家感受下~
可能还有同学会说,你说的这些我都刷过,可到了面试还是没法很快做出来,或者做出来后面试官后续的问题总是答不好。
不要方,我这里还有一份面试常考算法模板,包括算法的使用条件、复杂度分析、适用题型以及代码模板,有了这份“小抄”加持,做题就能快速找到思路。完整内容私信“模板”领取
最后,针对很多同学比较头疼的时间复杂度问题,送上一张时间复杂度与算法对应关系 Cheat Sheet。有了这个,你甚至可以通过题目要求的时间复杂度倒推可能会用到的算法。
以上模板和Cheat Sheet都出自《九章算法班》首节公开课,有兴趣的同学不妨来看看呀~
如果这篇回答对你有帮助的话,记得点个赞噢,别光顾着收藏啊喂~