又要到一年的招聘季了,确定又有不少人开始啃《编程之美》了吧。这本书从开阔视野的角度来讲很好,不过限于篇幅,有的问题并无讲清楚(甚至问题叙述模棱两可、被标榜为“鼓励同面试官交流以得到更多细节”);或者扩展问题自己很难,没有给予解答和提示。在我看书并在网络上查到的相关资料中,有不少重复的,也有很多基本没什么价值,有价值的文章是少数。为了便于查阅,也为了方便后人没必要在搜索上浪费时间,我把比较有价值的文章的连接整理在下面,并附以简单说明。另外,对于一些比较早的资料,对应的是前几版的《编程之美》;《编程之美》早起版本错误之多在勘误表上可见一斑,不过既然新版已经修正了这些问题,那就请使用新书的读者放心,并在浏览资料时注意。html
做为定位与《编程之美》相似的《剑指Offer》,上面有很多对相同问题的解;后者读起来实战的临场感更强一些(测试用例、边界条件等),两本书都值得一读。解法相同的题就不必重述了,而解法不一样或者作了一些扩展的题目一并标在下面。面试
1.1 让CPU占用率曲线听你指挥算法
《编程之美》读书笔记23: 1.1 让CPU占用率曲线听你指挥编程
不少完整程序,这里取个表明。事实上对于不了解windows编程的人来讲,这个问题难度要高于3星。windows
1.3 一摞烙饼的排序网络
烙饼啊烙饼{转自ITEO数据结构
对扩展问题作了详细探讨,原出处没有找到。post
1.7 光影切割问题测试
个人拙做,介绍了逆序对的寻找方式的优化。
1.11 NIM(1)一排石头的游戏
1.12 NIM(2)“拈”游戏分析
1.13 NIM(3)两堆石头的游戏
第五页对1.13扩展的NIM(4)游戏有很好的解释,而且全文能够看做NIM游戏的阅读材料。
我有写一篇总结NIM游戏规律的博文的计划,不过不知道时间是否容许。
《剑指Offer》面试题40:只出现一次的数字
又是XOR的应用。
1.18 挖雷游戏
4.11 扫雷游戏的几率
这两道题原书没有解。
最先解答4.11的博文的百度快照,源地址我打不开。
另外一个角度解答4.11问题。
解答《编程之美》1.18问题1:给全部未标识方块标注有地雷几率
个人拙做之二,对于网络上没有分析的1.18问题1进行解答。
2.1 求二进制中1的个数
这个是我买的纸质版《编程之美》这一节的读者反馈里的连接,不过翻了下电子版,彷佛早期的没有,所以附在这里。
《剑指Offer》面试题10:二进制中1的个数
若是输入是负数,那么《编程之美》第一段代码还能运行吗?(尽管它与《剑指Offer》解一不一样)
2.19 区间重合判断
扩展问题二维空间的覆盖问题的线段树解。
2.21 只考加法的面试题
这个题原书也没有解,此文已经很详细了。
3.4 从无头链表中删除节点
《剑指Offer》面试题13:在O(1)时间删除链表结点
若是给定了单链表头结点和一个结点的指针,要求删除此结点(多是头结点或尾结点),又该如何求解?
3.6 编程判断两个链表是否相交
个人拙做之三,其中原问题的解借鉴的部分请见注释,此文主要是说明怎样证实找环和找环入口算法的正确性。
同时,根据判环算法,能够解决3.11的扩展问题:链表判断是否有环的程序改错。
3.7 队列中取最大值操做问题
《剑指Offer》面试题7:用两个栈实现一个队列
介绍了另外一个问题:如何用两个队列实现一个栈?
3.8 求二叉树中节点的最大距离
本节总结里提到的连接,其实我的认为代码比原书中漂亮多了。我转载了此文:http://www.cnblogs.com/wuyuegb2312/articles/3174476.html
3.10 分层遍历二叉树
本节节末提到的连接。其实我彷佛记得当初在上严蔚敏版《数据结构》课程时,分层遍历二叉树就是借助队列实现的,思想和这个同样。
3.11 程序改错
http://www.cnblogs.com/wuyuegb2312/archive/2013/05/26/3090369.html
个人拙做之四,全方位分析二分查找这个老生常谈的问题,并不只仅限于代码改错。有意避开陷阱要比掉入陷阱后想办法爬出来更好,虽然这并不表明咱们不须要知道如何爬上来。扩展问题——判断链表是否有环的程序改错——请看3.6的连接。
4.2 瓷砖覆盖地板
是对扩展问题1“1*2瓷砖覆盖8*8地板”的状态动态规划解法中我所看到的最简洁易懂、空间占用少的。
更难得的是本文提供了p*q瓷砖覆盖M*N地板可行性的通常结论和阅读资料(MIT的pdf)。
《剑指Offer》面试题9:斐波那契数列
扩展问题中,2*M的地板覆盖问题的递推公式F(M)=F(M-1)+F(M-2),形式上是斐波那契数列。
4.3 买票找零
从《编程之美》买票找零问题提及,娓娓道来卡特兰数——兼爬坑指南
个人拙做之五,标题说明一切。
4.5 磁带文件存放优化
个人拙做之六,原书对于解是最优解根本没有说明白,只是举了个例子而已;这篇文章将告诉你为何是最优解。
4.7 蚂蚁爬杆
对扩展问题很详细的探讨。
另外再附两个连接,请注意时效性:
《编程之美》出版方,收录了一些问题的网友的解答。
不少解题法被《编程之美》收录。