这里面有10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;
这里面有10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
掌握了这些基础的数据结构和算法,再学更加复杂的数据结构和算法,就会非常容易、非常快。
因为刷 LeetCode 对于国内 IT 企业面试帮助很大,对于 BAT 等一线大厂来说,算法面试是必须跨过去的一道坎,所以必须得准备好算法面试~但很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试!
为什么?
你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂。
你在面试的时候,卡壳了,一时间忘了怎么写代码了。
刷到就是赚到!!
想想是不是很刺激,有没有动力开始刷题了!可以提速刷题了!
就目前互联网的情况来说,无论是面国外大厂还是面国内大厂,如果想换工作都要去刷题,一面二面不丢你几道 Hard 题,都对不住你偷偷摸摸找个会议室假装开会实则面试的鸡贼。
同时,还得认识到一点,面试能力和你平时的工作能力其实差别挺大的。
有些人技术挺厉害的,但没有刷题,一面二面都过不了,而某些小镇刷题家,还真就靠刷题拿下了 Google、微软、脸书等大厂offer。
国内大厂也有这种趋势,比如字节,一大半都是面试题。
如果目标是国内大厂,那么一定要刷足够的题,不需要把 LeetCode 上 2500 道算法题都刷完,但至少刷 200 道算法高频题。
面试前一周以看题为主,因为刷题也刷不了几题,多看看自己总结或者别人总结的模板,比如回溯算法模板,掌握后,几十道回溯题都不在话下。
刷题过程需要注意难度要循序渐进,算法训练是一个系统工程,需要循序渐进,太过于急功近利,反而容易因做不出难题而产生挫败感,带来反效果。
如果你本身有基础,熟练度高,那你刷简单的 LeetCode 应该是几分钟一题,几分钟一题的,花不了你多少时间。
如果你刷简单都花费很长时间,说明熟练度不够,就更应该从简单开始,然后过度到中等,再过度到困难。
并且,目前国内大厂的算法考察,基本不会超过 LeetCode 中等难度,上限难度基本都是 LeetCode 中等题里面的中等难度,所以不要太去纠结难题怪题偏题。