又要到一年的招聘季了,肯定又有很多人開始啃《編程之美》了吧。這本書從開闊視野的角度來說很好,不過限於篇幅,有的問題並沒有講清楚(甚至問題敘述模棱兩可、被標榜為“鼓勵同面試官交流以獲得更多細節”);或者擴展問題本身很難,沒有給予解答和提示。在我看書並在網絡上查到的相關資料中,有很多重復的,也有不少基本沒什么價值,有價值的文章是少數。為了便於查閱,也為了方便后人不必在搜索上浪費時間,我把比較有價值的文章的鏈接整理在下面,並附以簡單說明。另外,對於一些比較早的資料,對應的是前幾版的《編程之美》;《編程之美》早起版本錯誤之多在勘誤表上可見一斑,不過既然新版已經修正了這些問題,那就請使用新書的讀者放心,並在瀏覽資料時注意。
作為定位與《編程之美》類似的《劍指Offer》,上面有不少對相同問題的解;后者讀起來實戰的臨場感更強一些(測試用例、邊界條件等),兩本書都值得一讀。解法相同的題就沒必要重述了,而解法不同或者做了一些擴展的題目一並標在下面。
1.1 讓CPU占用率曲線聽你指揮
《編程之美》讀書筆記23: 1.1 讓CPU占用率曲線聽你指揮
很多完整程序,這里取個代表。事實上對於不了解windows編程的人來說,這個問題難度要高於3星。
1.3 一摞烙餅的排序
對擴展問題做了詳細探討,原出處沒有找到。
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 螞蟻爬桿
對擴展問題很詳細的探討。
另外再附兩個鏈接,請注意時效性:
《編程之美》出版方,收錄了一些問題的網友的解答。
很多解題法被《編程之美》收錄。
