又要到一年的招聘季了,確定又有不少人開始啃《編程之美》了吧。這本書從開闊視野的角度來講很好,不過限於篇幅,有的問題並無講清楚(甚至問題敘述模棱兩可、被標榜爲「鼓勵同面試官交流以得到更多細節」);或者擴展問題自己很難,沒有給予解答和提示。在我看書並在網絡上查到的相關資料中,有不少重複的,也有很多基本沒什麼價值,有價值的文章是少數。爲了便於查閱,也爲了方便後人沒必要在搜索上浪費時間,我把比較有價值的文章的連接整理在下面,並附以簡單說明。另外,對於一些比較早的資料,對應的是前幾版的《編程之美》;《編程之美》早起版本錯誤之多在勘誤表上可見一斑,不過既然新版已經修正了這些問題,那就請使用新書的讀者放心,並在瀏覽資料時注意。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 螞蟻爬杆
對擴展問題很詳細的探討。
另外再附兩個連接,請注意時效性:
《編程之美》出版方,收錄了一些問題的網友的解答。
不少解題法被《編程之美》收錄。