面试算法爱好者书籍/OJ推荐

这个书单也基本适用于准备面试。

一、教科书

基本上一般的算法课本介绍的范围都不会超出算法导论和算法引论的范围。读完这两本书,其它的算法课本大致翻翻也就知道是什么货色了。

1. 算法导论

这本书的内容用三个字来总结。就是伟光正。

基本上囊括了经常使用算法的方方面面,证明巨细无遗,十分适合刚開始学习的人阅读。

可是这本书的一大问题就是,证明尽管具体。却从未解释算法背后的理由。仅仅告诉你怎样去做,却从未探讨过为何如此去做。

2.算法引论(Introduction to Algorithms, a Creative Approach)

算法导论告诉我们how。这本书就力图告诉我们why。书中极为强调的数学归纳法是建立算法设计思维的重要一步。

另外,这本书的习题中有非常多常见的面试难题,包含skyline、众数和名人问题。

3.Algorithms on Strings, Trees and Sequences

前两本书对于一般的算法描写叙述已经比較全面了。

可是在字符串相关算法方面。这本书不可不读。读完之后,对字符串算法的全貌就会有一个了解,包含后缀树和AC自己主动机这些寻常不太easy接触到的数据结构。

作者是做生物的,所以后面有一些关于生物的应用,直接忽略就好,没神马意思。

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难度太多。并且题目也不常见,是些非常好的补充。从第四章開始。难度就開始碾压一般面试算法了。

量力而行。

 

http://zalgorithm.com/blog/rhoaias/2014/04/14/%e9%9d%a2%e8%af%95%e7%ae%97%e6%b3%95%e7%88%b1%e5%a5%bd%e8%80%85%e4%b9%a6%e7%b1%8doj%e6%8e%a8%e8%8d%90/

面试算法爱好者书籍/OJ推荐的更多相关文章

  1. linux c++ 服务器端开发面试必看书籍

    摘自别人博客,地址:http://blog.csdn.net/qianggezhishen/article/details/45951095 打算从这开始一本一本开始看 题外话: 推荐一个 githu ...

  2. python经典面试算法题1.1:如何实现链表的逆序

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.1 如何实现链表的逆序 [腾讯笔试题] 难度系数:⭐⭐⭐ ...

  3. Machine Learning读书会,面试&算法讲座,算法公开课,创业活动,算法班集锦

    Machine Learning读书会,面试&算法讲座,算法公开课,创业活动,算法班集锦 近期活动: 2014年9月3日,第8次西安面试&算法讲座视频 + PPT 的下载地址:http ...

  4. [译]C++书籍终极推荐

    转载声明: 翻译仅以技术学习和交流为目的,如需转载请务必标明原帖链接. 来源:http://stackoverflow.com/questions/388242/the-definitive-c-bo ...

  5. 牛客网《BAT面试算法精品课》学习笔记

    目录 牛客网<BAT面试算法精品课>学习笔记 牛客网<BAT面试算法精品课>笔记一:排序 牛客网<BAT面试算法精品课>笔记二:字符串 牛客网<BAT面试算法 ...

  6. python经典面试算法题1.4:如何对链表进行重新排序

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.4 对链表按照如下要求重新排序 [微软笔试题] 难度系数: ...

  7. python经典面试算法题1.3:如何计算两个单链表所代表的数之和

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.2 如何实现链表的逆序 [华为笔试题] 难度系数:⭐⭐⭐ ...

  8. python经典面试算法题1.2:如何从无序链表中移除重复项

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.2 如何实现链表的逆序 [蚂蚁金服面试题] 难度系数:⭐⭐ ...

  9. python经典面试算法题4.1:如何找出数组中唯一的重复元素

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [百度面试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐ 题目描述 ...

随机推荐

  1. LeetCode OJ--Best Time to Buy and Sell Stock III

    http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ 这三道题,很好的进阶.1题简单处理,2题使用贪心,3题使用动态 ...

  2. 如何通过ShareSDK的 Unity3D快速接入Android/iOS分享与授权

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎:在游戏 ...

  3. [Bzoj5359][Lydsy1805月赛]寻宝游戏(dp)

    5359: [Lydsy1805月赛]寻宝游戏 Time Limit: 2 Sec  Memory Limit: 512 MBSubmit: 71  Solved: 19[Submit][Status ...

  4. [Bzoj3687]简单题(bitset)

    3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1150  Solved: 565[Submit][Status][Discuss] ...

  5. java retry:详解

    发现 今天在探秘线程池原理知识点,在阅读JDK源码时遇到程序代码中出现如下代码,因为之前没有遇到过,于是特地记录下来并谷歌了一番,后面我自己做了一些简要的验证和分析. 验证 网上溜达一番发现,这ret ...

  6. mybatis ----SqlSessionManager

    今天我们来看看这个类 有些写法还是很经典的 public class SqlSessionManager implements SqlSessionFactory, SqlSession { priv ...

  7. 随笔:Golang 时间Time

    先了解下time类型: type Time struct { // sec gives the number of seconds elapsed since // January 1, year 1 ...

  8. DICOM医学图像处理:Deconstructed PACS之Orthanc

    背景: 此篇博文介绍一个开源的.基于WEB的DICOM Server软件.该开源软件完全使用C++编写,不依赖于第三方数据库(内置了SQLite数据库)或其他框架,支持RESTful API设计模式. ...

  9. c#中开发ActiveX的学习笔记【转】

    http://www.cnblogs.com/yjmyzz/archive/2009/12/14/1623396.html 1.为什么要用ActiveX? 网页本身的功能是有限的,要想实现一些网页本身 ...

  10. 重新认识一遍JavaScript - 2

    1.JavaScript没有Java和C中的int.double,怎么识别这些类型的呢?或者说不支持 问:你认为呢? 答:var 支持所有数据类型(int.double.string),取决于你输入的 ...