刷 leetcode 需要哪些基础?
- 算法刷题
- 时间:2020-06-15 13:07
- 5448人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
我见过完全0基础、大龄转码,刷题上千然后进谷歌的……
姑且称他为老A吧。这里0基础指的是没学过编程语言,没学过数据结构和算法,一上来就直接做题那种。
第一道题two sum,老A显然是不会做的。他的方法就是看答案,背答案,然后默出来,就这样还是错了很多次。
然而就是这样低的起点,老A把LC前300道题刷了至少3遍,累计刷题数超过1000道,最后靠刷题上岸了谷歌。
关于老A的求职过程和刷题经验,可以来看看他自己的分享:
我说老A的故事,并不是鼓励大家从0开始刷题,毕竟老A自己也走了很多弯路,踩了无数坑。
如果能早点掌握正确的方法,老A也就不用刷1000道题了。不过老A的刷题经验和面试做题方法确实有独到之处。
在Leetcode/LintCode开始刷题,首先最好能具备一定的基础,包括:
语言基础
用于刷题的编程语言有很多,算法是通用的,不受限于语言,主流的Java或者Python都可以。
Java的优点是用的公司多,一般面试官没有不会Java的;Python优势在于语法简单,coding能节省很多时间。
算法部分
二分搜索 Binary Search 分治 Divide Conquer 宽度优先搜索 Breadth First Search 深度优先搜索 Depth First Search 回溯法 Backtracking 双指针 Two Pointers 动态规划 Dynamic Programming 扫描线 Scan-line algorithm 快排 Quick Sort
数据结构部分
栈 Stack 队列 Queue 链表 Linked List 数组 Array 哈希表 Hash Table 二叉树 Binary Tree 堆 Heap 并查集 Union Find 字典树 Trie
如果是应对求职面试,那么可以按照下面的面试高频知识点来刷。
https://www.zhihu.com/question/30737325/answer/1281270338
对算法题来说有两大法宝,“拿到题选什么算法”和“如何实现这个算法”,后者会更容易一些,所以可以先从实现算法开始练起(LintCode可以筛选对应知识点的分类训练)。
当然,针对面试算法,也有一些书:
《剑指 Offer》:几乎包含所有常见的、经典的面试题,是应对面试的必读书籍
《编程之美》:适合准备面试FLAG大厂时候用来刷题
ps:配合在LintCode食用效果更佳
最后,关于算法和数据结构,再推荐一些书。
1.入门系列:
《算法图解》:“像小说一样有趣的算法入门书”,主打“图解”,通俗易懂
《大话数据结构》:把理论讲得有趣不枯燥;每个数据结构和算法,作者都结合了生活中的例子,能让你有非常直观的感受。
2.教科书系列:
《数据结构与算法分析》:很多大学都拿它当作教材,非常系统、全面、严谨,适合掌握了至少一门编程语言的同学。
作者也很贴心,这本书有三种语言的版本:《数据结构与算法分析 : C 语言描述》《数据结构与算法分析 : C++ 描述》《数据结构与算法分析 : Java 语言描述》。
3.进阶之旅:
《算法导论》:有了一定基础之后,就可以开始啃这本大部头了。
5.扩展阅读:
《算法之美》:算法科普,从生活中的各种问题说起:租房、谈恋爱、老虎机、拍电影、面试、买彩票、各种排序、找停车位、寻找新药、临床试验、奥巴马拉赞助、预估电影票房等等,非常生活化,可以作为补充阅读。
《算法帝国》:同样是科普类书籍,并无涉及算法的原理与实现细节,也可以作为补充阅读。
6.殿堂级
《计算机程序设计艺术》:包含很多卷,深度、广度、系统性、全面性是其他所有数据结构和算法书籍都所无法相比。可以当做一种挑战~