首先,刷题是为了了解思路;然后,其次才是语言,进行实现;最后,不能一遍就算了 要反复刷且学会刷题。
有总结、坚持和结题指南的输出。
在前文基础上新增一些想法:
刷题思路 —— 大厂攻略
前言
python 链接刷题顺序——按照 一个类型刷:https://github.com/huxiaoman7/leetcodebook
400道题目
提升精简版本 - 250题目
PS.
①分享一些计算机的经典书籍,大部分对面试应该都有帮助,强烈推荐 🌝
我看过的 100 本书
② 重点250题——二刷时候看;注意总结模板。
刷题模板和套路总结
刷题是为了思维不易望。全面总结 并 掌控算法。
算法套路F*cking[5]
fucking-algorithm[1] 对 Leetcode 上的题型进行了全方位的总结解析,对同类型的题总结了算法思维,举一反三,仔细研读一下这篇笔记,找工作再也不会被算法题难到,像作者所说的,“「感受一下支配算法的乐趣」“。
这个开源项目一共分为六章,G 哥简单概括了一下项目所涵盖的内容:
「必读系列」 :作者从大的框架思维出发,介绍了动态规划解题框架、回溯算法解题框架、二分查找、滑动窗口解题框架、双指针技巧解题框架等,全是 Leetcode 题型网红款。作者对这些题型的解题框架进行了详细的总结,让读者从一开始就对整体的解题思路有一个清晰的认识,在后面的章节中,对每一个问题进行了详细例题分析,举一反三。
「动态规划系列」 :作者分析了最长递增子序列、编辑距离、高楼扔鸡蛋等多个经典问题,对每一个问题的讨论,并非浅尝辄止,而是进行了深入和进阶的讨论,都结合了详细的代码和图示,并结合框架思想,把代码揉碎了给小伙伴们看,给人一种动态规划的算法,“并非“书上的伪码,而是一种实际生活中的思想,掌握了这种思想,学习算法,再也不用背伪码了。
「数据结构系列」 :对数据结构相关的难点展开了详细讨论。用二叉堆详解实现了优先级队列、LRU 算法详解、二叉搜索树操作集锦,还讨论了单调栈和单调队列这两种特殊结构等。
「算法思维系列」 :对回溯算法、二分查找、双指针、滑动窗口、twoSum 问题、位操作、排序、前缀等热点问题进行了详细讨论,涵盖面非常广,每一个小节都足以解君愁。
「高频面试系列」 :每一小节都以 Q&A 的形式对高频面试问题展开了讨论,如何实现 LRU 算法、如何高效寻找素数、如何计算编辑距离等等。作者还在“一行代码就能解决的算法题“小节中,讨论了三道 Leetcode 中有趣的脑筋急转弯题目。
「计算机技术」 :作者收集了 「Linux 的进程」、「线程和文件描述符」、「网络中的 session 和 cookie」、「Linux shell」、「加密算法的前世今生」 等内容。
101 Google Algorithm
本书分为算法和数据结构两大部分,又细分了十五个章节,详细讲解了刷LeetCode时常用的技巧。我把题目精简到了101道,一是呼应了本书的标题,二是不想让读者阅读和练习时间过长。
这么做不太好的一点是,如果只练习这101道题,读者可能对算法和数据结构的掌握不够扎实。因此在每一章节的末尾,我都加上了一些推荐的练习题,并给出了一些解法提示,希望读者在理解每一章节后把练习题也完成。
参考C++链接:[6]
优快云输出解题思路–经验
做总结
怎么说呢,做总结这件事的好处,谁做谁知道,不信你就试试…
每道题有每道题的总结,每种类型的题有某类题的总结,千万不要怕麻烦,虽然刚开始的时候确实会很麻烦…
每每回想起来,我最后悔的就是在我刚开始刷题的时候没有做总结。当年集训队老师告诉我们每道题做完都要把题解发布到 优快云 上,记录自己的思路,解题方式和代码。这件事乍一听我觉得太麻烦,觉得“有这个时间我多刷道题它不香嘛”,一直当作耳旁风。
后来真正开始在 优快云 上发题解,并不是我突然顿悟,而是集训队老师看我们太懒,强制执行,然而这个强制,在经过初期的不适以后,慢慢的让我形成了做什么都要总结记录的习惯,一下子就写了 6 年。
保持热情
保持热情,不仅仅是能坚持,而要在坚持上最好能带有一点兴趣。刷题真的是一个很漫长的过程,如何在这个过程中能坚持下去真的很难做到…
我觉得你最好有一个最终的目标,这个很多开始刷题的同学肯定都有,不然没人闲着没事找事去刷题,有了最终的目标朝着这个方向去努力,同时把这个过程分成一部分一部分,比如拿刷专题来说,我这段时间刷链表,下段时间刷贪心,再下段时间刷 dp…
将目标量化为可衡量的每一段,自己有了掌控感,一步一步的向着最终的目标前进,知道自己离着还有多远,不至于半途而废。
拿我自己来说,当年搞 ACM,半年以后我已经准备放弃了,那段时间完全迷茫,觉得自己水平很差,没有机会去参加比赛,不可能拿到奖牌。那段时间我开始去寻找别的出路,去参加 Python 的社团,准备转去做项目。
浑浑噩噩了一圈,最后还是回去做 ACM,一方面是不想让自己半年的努力付诸东流,对拿牌子的执念,更多的是我发现坐在那写项目和做题比起来,我更喜欢 AC 的快感。
其它:GO语言+面经
Go语言:算法模板科学刷题[2]+Beats100%'s CookBooks[1]
开始刷题时,确实是无从下手,因为从序号开始刷,刷到几道题就遇到 hard 的题型,会卡住很久,后面去评论区看别人怎么刷题,也去 Google 搜索最好的刷题方式,发现按题型刷题会舒服很多,基本一个类型的题目,一天能做很多,慢慢刷题也不再枯燥,做起来也很有意思,最后也收到不错的 offer(最后去了宇宙系)。
回到最开始的问题,面试到底要刷多少题,其实这个取决于你想进什么样公司,你定的目标如果是国内一线大厂,个人感觉大概 200 至 300 题基本就满足大部分面试需要了。第二个问题是按什么顺序刷及如何提高效率,这个也是本 repo 的目的,给你指定了一个刷题的顺序,以及刷题的模板,有了方向和技巧后,就去动手吧~ 希望刷完之后,你也能自己总结一套属于自己的刷题模板,有所收获,有所成长~
推荐的刷题路径
按此 repo 目录刷一遍,如果中间有题目卡住了先跳过,然后刷题一遍 LeetCode 探索基础卡片,最后快要面试时刷题一遍剑指 offer。
为什么这么要这么刷,因为 repo 里面的题目是按类型归类,都是一些常见的高频题,很有代表性,大部分都是可以用模板加一点变形做出来,刷完后对大部分题目有基本的认识。然后刷一遍探索卡片,巩固一下一些基础知识点,总结这些知识点。最后剑指 offer 是大部分公司的出题源头,刷完面试中基本会遇到现题或者变形题,基本刷完这三部分,大部分国内公司的面试题应该就没什么问题了~
1、 algorithm-pattern 练习题
2、 LeetCode 卡片
3、 剑指 offer
刷题时间可以合理分配,如果打算准备面试了,建议前面两部分 一个半月 (6 周)时间刷完,最后剑指 offer 半个月刷完,边刷可以边投简历进行面试,遇到不会的不用着急,往模板上套就对了,如果面试管给你提示,那就好好做,不要错过这大好机会~
注意点:如果为了找工作刷题,遇到 hard 的题如果有思路就做,没思路先跳过,先把基础打好,再来刷 hard 可能效果会更好~
面试资源
面经刷题网站
参考链接:[3] [4]
其它推荐的git仓库
参考链接:[7] [8] [9]
参考链接
- GO语言Beats 100%霜神:https://github.com/halfrost ; 100%beats Go ; 知乎链接【附加书籍:《算法宝典》——cook books】。
- Go的 顺序表 https://greyireland.gitbook.io/algorithm-pattern/ ;知乎链接【附加自己模板和网站联系——上述链接+知识卡片】。
- Java版本的顺序表/面试经验:https://github.com/yuanguangxin/LeetCode ;知乎链接。
- 大厂面经:本仓库用于汇总互联网公司技术岗考察leetcode题目的热度🔥,帮助同学们更加有针对性地准备面试;【附加 岗位+部分+职位搜索刷题网站】。
- labuladong’s fucking-algorithm网站;【附加手撕算法书籍:链接;C++ & Python实现】。
- 谷歌大佬101道刷题笔记——附加多道推荐的题目。【附加 谷歌大佬笔记C++实现】;知乎链接。
- 这个项目使用多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解。
- 这个项目被官方精选很多solutions。
- 这个项目直观地图解了LeetCode算法。