业余算法爱好者书籍/OJ推荐 « Ashes of Time
一、教科书
基本上一般的算法课本介绍的范围都不会超出算法导论和算法引论的范围。读完这两本书,其他的算法课本大致翻翻也就知道是什么货色了。
1. 算法导论
这本书的内容用三个字来总结,就是伟光正。基本上囊括了常用算法的方方面面,证明巨细无遗,十分适合初学者阅读。
但是这本书的一大问题就是,证明虽然详细,却从未解释算法背后的理由。只告诉你如何去做,却从未探讨过为何如此去做。
2.算法引论(Introduction to Algorithms, a Creative Approach)
算法导论告诉我们how,这本书就力图告诉我们why。书中极为强调的数学归纳法是建立算法设计思维的重要一步。
另外,这本书的习题中有很多常见的面试难题,包括skyline、众数和名人问题。
3.Algorithms on Strings, Trees and Sequences
前两本书对于一般的算法描述已经比较全面了。但是在字符串相关算法方面,这本书不可不读。读完之后,对字符串算法的全貌就会有一个了解,包括后缀树和AC自动机这些平常不太容易接触到的数据结构。
作者是做生物的,所以后面有一些关于生物的应用,直接忽略就好,没神马意思。
4.具体数学
这本书和前三本相比,就学院化了很多。是很数学的一本书,但是里面介绍的很多思想和例子都很好玩。
有大把时间就可以读读娱乐,没时间就算了。
二、杂书
5. Algorithmic Puzzles
相比前面那几本大作,这本小书更像是一本脑筋急转弯的collection。
但是别小看这本书。它在题目之前提到的解题模式,是有着广泛应用的。
6. 算法设计与分析基础
因为提到了上面那本书,这本书也就不得不提一下。算法设计与分析基础,同样总结了类似的解题方法,所以这两本书可能是个互相“借鉴”的关系。
这本书的问题是,想法虽然好,但是习题实在是太烂了。烂到你不需要掌握他的那些想法就能解出来。所以随便看看就好。
7. 挑战程序设计竞赛
一本新的程序设计竞赛讲解书籍。这本书相对于黑书,难度可能略有下降(我以前匆匆看过黑书),但是同时语言文字上好了两个数量级。反正我们也不是专业搞ACM竞赛的,难度上看这本书足够。
三、面试算法
面试算法中有很多很tricky的东西,在书本中不会提到,在竞赛中也很少遇到(某人将其命名为folk algorithms, 乡野算法)。这时候就需要专门用来准备面试的书籍登场了。
8. Cracking the Code Interview
这书的题目难度比较正常,但是覆盖面够广。如果放在两年前,这本书基本覆盖了所有popular的面试算法题目。
9. Elements of Programming Interviews
这本书是一本很讨厌的书。内容新且难。每个带Ninja标志的题目都值得好好琢磨。但是EPI的语言非常糟糕。有的题目你得结合答案讲解来看才明白题目是什么意思。有的题目你得结合代码来看才知道题目是什么意思。
另外这本书开头的解题模式也值得好好研读。
四、Online Judge
自动化的在线评测系统。我认真做过的只有两个:
10. Leetcode。
http://oj.leetcode.com
至今收集了150道面试算法题目,提供了在线的testcase自动测试,其中还颇有几道难题。当然大部分其实是莫名其妙的水题。
一般来说leetcode认真做完,认真总结,全面理解,应对一般的面试算法就不成什么问题。
11. USACO training
这个training的前三章没有超出leetcode难度太多,而且题目也不常见,是些很好的补充。从第四章开始,难度就开始碾压一般面试算法了。量力而行。
Read full article from 业余算法爱好者书籍/OJ推荐 « Ashes of Time
No comments:
Post a Comment