資料結構與演算法/leetcode/lintcode題解

    本文檔為資料結構和演算法學習筆記,全文大致分為以下三大部分:

    1. Part I為資料結構和演算法基礎,介紹一些基礎的排序/鏈表/基礎演算法
    2. Part II為 OJ 上的程式設計題目實戰,按題目的內容分章節編寫,主要來源為 https://leetcode.com/ 和 .
    3. Part III 為附錄部分,包含如何寫履歷和其他附加資料

    本文參考了很多教材和部落格,凡參考過的幾乎都給出明確超連結,如果不小心忘記了,請不要吝惜你的評論和issue :)

    本項目保管在 https://github.com/billryan/algorithm-exercise 由 渲染生成 HTML 頁面。你可以在 GitHub(不是 Gitbook) 中 star 該項目查看更新,也可以訂閱 https://ds-algo.slack.com/messages/github_commit/ 中的 channel 在郵件中查看更新細節。RSS 種子功能正在開發中。

    Slack 的自助邀請註冊功能已啟用,訪問 即刻開啟~

    你可以線上或者離線查看/搜索本文檔,以下方式任君選擇~

    • 線上閱讀(由 Gitbook 渲染) http://algorithm.yuanbin.me
      1. EPUB. , Gitbook, - 適合在 iPhone/iPad/MAC 上離線查看,實測效果極好。
      2. MOBI. GitHub, , 七牛 CDN(中国大陆用户适用) - Kindle 專用. 未測試,感覺不適合在 Kindle 上看此類書籍,儘管 Kindle 的屏幕對眼睛很好…
    • Google 站內搜索:

    • Swiftype 站內搜索: 可使用網頁右下方的 進行站內搜索

    授權條款

    本作品採用 創用CC 姓名標示-相同方式分享 4.0 國際許可協議 進行許可。傳播此文檔時請注意遵循以上許可協議。 關於本授權的更多詳情可參考

    本著獨樂樂不如眾樂樂的開源精神,我將自己的演算法學習筆記公開和小夥伴們討論,希望高手們不吝賜教。

    多國文字

    如果你發現任何有錯誤的地方或是想更新/翻譯本文檔,請毫不猶豫地猛點擊 貢獻指南.

    如何練習演算法

    雖說練習演算法偏向於演算法本身,但是好的程式碼風格還是很有必要的。粗略可分為以下幾點:

    • 程式碼可為三大塊:異常處理(空串和邊界處理),主體,返回
    • 程式碼風格(可參考Google的程式設計語言規範)
      1. 變量名的命名(有意義的變數名)
      2. 縮排(語句塊)
      3. 空格(運算子兩邊)
      4. 程式碼可讀性(即使if語句只有一句也要加花括號)
    • 《Code Complete》中給出的參考
    1. 總結歸類相似題目
    2. 找出適合同一類題目的模板程序
    3. 對基礎題熟練掌握

    以下整理了一些最近練習演算法的網站資源,和大家共享之。

    線上OJ及部分題解

    • - 找工作方面非常出名的一個OJ,每道題都有 discuss 頁面,可以看別人分享的程式碼和討論,很有參考價值,相應的題解非常多。不過線上程式碼編輯框不太好用,寫著寫著框就拉下來了,最近評測速度比 lintcode 快很多,而且做完後可以看自己程式碼的運行時間分布,首推此 OJ 刷面試相關的題。
    • LintCode | Coding interview questions online training system - 和leetcode類似的在線OJ,但是篩選和寫程式碼時比較方便,左邊為題目,右邊為程式碼框。還可以在處選擇 CC150 或者其他來源的題。會根據系統locale選擇中文或者英文,可以拿此 OJ 輔助 leetcode 進行練習。
    • - 題解部分十分詳細,比較容易理解,但部分題目不全。
    • FreeTymeKiyan/LeetCode-Sol-Res - Clean, Understandable Solutions and Resources on LeetCode Online Judge Algorithms Problems.
    • - IT,演算法及面試。有知識點及類型題總結,特別贊。
    • ITint5 | 專注於IT面試 - 文章品質很高,也有部分公司面試題評測。
    • - 各類題解
    • 牛客網-專業IT筆試面試備考平台,最全求職題庫,全面提升IT程式設計能力 - 中國一個IT求職方面的綜合性網站,比較適合想在中國求職的看看。感謝某位美女的推薦 :)

    書籍推薦

    本節後三項參考自九章微信分享,謝過。

    • The Algorithm Design Manual, 作者還放出了自己上課的影片和slides - ,The Algorithm Design Manual (豆瓣)
    • 大部頭有 Introduction to Algorithm 和 TAOCP
    • Cracking The Coding Interview. 著名的CTCI(又稱CC150),Google, Mircosoft, LinkedIn 前HR離職之後寫的書,從很全面的角度剖析了面試的各個環節和題目。除了演算法資料結構等題以外,還包含OO Design, Database, System Design, Brain Teaser等類型的題目。準備北美面試的同學一定要看。
    • 劍指Offer。適合中國找工作的同學看看,英文版叫Coding Interviews. 作者是何海濤(Harry He)。Amazon.cn上可以買到。有大概50多題,題目的分析比較全面,會從面試官的角度給出很多的建議和show各種坑。
    • 進軍矽谷 — 程序員面試揭秘。有差不多150題。

    學習資源推薦(繁體中文譯者)

    • (MOOC)

    進階