商品簡介
作者簡介
序
目次
相關商品
商品簡介
★LeetCode刷題最重要題目精解
★資料結構程式語言紮實基礎
★演算法完整實作
★陣列、鏈結串列、樹、搜尋、佇列、圖演算法
★LRU、LFU快取
★費氏數列、N皇后問題、背包問題
★Union-Find
★Kruskal演算法
本書專攻演算法刷題,訓練演算法思維,應對演算法筆試,注重用策略和框架思維解決問題,以不變應萬變。
第1章列舉了幾個最常見的演算法類型及對應的解題框架思路,包括雙指標、滑動視窗等演算法技巧,並把動態規劃、回溯演算法、廣度優先搜索等技巧的核心抽象為二元樹的兩種問題形式。第2章介紹了基礎資料結構相關的演算法,包括陣列鏈結串列的常見技巧整理和資料結構設計的經典例題。第3章從二元樹的幾種解題思路開始,嘗試從二元樹的角度理解快速排序和歸併排序,進一步講解回溯、DFS、BFS等暴力搜索演算法。第4章具體介紹了動態規劃相關的技巧,例如如何確定base case,如何寫狀態轉移方程式,如何進行狀態壓縮等技巧,並用動態規劃的通用思路框架解決了十幾道經典的動態規劃問題。第5章講解了一些高頻面試/筆試題目,每道題目可能會結合之前章節講過的多種演算法思路,也可能有多種解法。
★資料結構程式語言紮實基礎
★演算法完整實作
★陣列、鏈結串列、樹、搜尋、佇列、圖演算法
★LRU、LFU快取
★費氏數列、N皇后問題、背包問題
★Union-Find
★Kruskal演算法
本書專攻演算法刷題,訓練演算法思維,應對演算法筆試,注重用策略和框架思維解決問題,以不變應萬變。
第1章列舉了幾個最常見的演算法類型及對應的解題框架思路,包括雙指標、滑動視窗等演算法技巧,並把動態規劃、回溯演算法、廣度優先搜索等技巧的核心抽象為二元樹的兩種問題形式。第2章介紹了基礎資料結構相關的演算法,包括陣列鏈結串列的常見技巧整理和資料結構設計的經典例題。第3章從二元樹的幾種解題思路開始,嘗試從二元樹的角度理解快速排序和歸併排序,進一步講解回溯、DFS、BFS等暴力搜索演算法。第4章具體介紹了動態規劃相關的技巧,例如如何確定base case,如何寫狀態轉移方程式,如何進行狀態壓縮等技巧,並用動態規劃的通用思路框架解決了十幾道經典的動態規劃問題。第5章講解了一些高頻面試/筆試題目,每道題目可能會結合之前章節講過的多種演算法思路,也可能有多種解法。
作者簡介
付東來
微信公眾號「labuladong」的作者,有多年的刷題經驗,希望用通俗易懂的語言幫助廣大網路從業者少走彎路,快速從根本上克服算法難關,為職業道路的發展賦能。
微信公眾號「labuladong」的作者,有多年的刷題經驗,希望用通俗易懂的語言幫助廣大網路從業者少走彎路,快速從根本上克服算法難關,為職業道路的發展賦能。
序
前 言
資料結構和演算法在電腦知識系統中有著舉足輕重的作用,這塊知識也有非常經典的教材供我們學習。但是,我們刷的演算法題往往會在經典的演算法思想之上套層皮,所以很容易讓人產生這種感覺:我以前的資料結構和演算法學得挺好的,為什麼這些演算法題我完全沒想法呢?
面對這種疑惑,可能就會有人擺出好幾本演算法相關的大部頭,建議你去進修。
有些書確實很經典,但我覺得我們應該搞清楚自己的目的是什麼。如果你是學生,對演算法有濃厚的興趣,甚至說以後準備搞這方面的研究,那我覺得你可以去啃一啃大部頭;但事實是,大部分人學習演算法是為了應對考試,這種情況去啃大部頭的C/P值就比較低了,更高效的方法是直接刷題。
但是,刷題也是有技巧的,刷題平臺動輒幾千道題,難道你全刷完嗎?最高效的刷題方式是邊刷邊歸納總結,抽象出每種題型的策略框架,以不變應萬變。我個人還是挺喜歡刷題的,經過長時間的累積總結,沉澱出了這本書,希望能給你帶來想法上的啟發和指導。
解演算法題的核心只有一個,那就是窮舉。不同的演算法,無非就是聰明的窮舉和笨一點的窮舉而已,真的沒什麼高深莫測的,讀完本書,你就會有深刻的體會。
資料結構和演算法在電腦知識系統中有著舉足輕重的作用,這塊知識也有非常經典的教材供我們學習。但是,我們刷的演算法題往往會在經典的演算法思想之上套層皮,所以很容易讓人產生這種感覺:我以前的資料結構和演算法學得挺好的,為什麼這些演算法題我完全沒想法呢?
面對這種疑惑,可能就會有人擺出好幾本演算法相關的大部頭,建議你去進修。
有些書確實很經典,但我覺得我們應該搞清楚自己的目的是什麼。如果你是學生,對演算法有濃厚的興趣,甚至說以後準備搞這方面的研究,那我覺得你可以去啃一啃大部頭;但事實是,大部分人學習演算法是為了應對考試,這種情況去啃大部頭的C/P值就比較低了,更高效的方法是直接刷題。
但是,刷題也是有技巧的,刷題平臺動輒幾千道題,難道你全刷完嗎?最高效的刷題方式是邊刷邊歸納總結,抽象出每種題型的策略框架,以不變應萬變。我個人還是挺喜歡刷題的,經過長時間的累積總結,沉澱出了這本書,希望能給你帶來想法上的啟發和指導。
解演算法題的核心只有一個,那就是窮舉。不同的演算法,無非就是聰明的窮舉和笨一點的窮舉而已,真的沒什麼高深莫測的,讀完本書,你就會有深刻的體會。
目次
第 1 章 核心框架篇
1.1 學習資料結構和演算法的框架思維
1.2 電腦演算法的本質
1.3 動態規劃解題策略框架
1.4 回溯演算法解題策略框架
1.5 BFS 演算法解題策略框架
1.6 一步步帶你刷二元樹(綱領)
1.7 我寫了首詩,保你閉著眼睛都能寫出二分搜尋演算法
1.8 我寫了一個範本,把滑動視窗演算法變成了默寫題
第 2 章 一步步刷資料結構
2.1 陣列、鏈結串列
2.2 資料結構設計
第 3 章 一步步培養演算法思維
3.1 二元樹
3.2 二元搜尋樹
3.3 圖論演算法
3.4 暴力搜尋演算法
第 4 章 一步步刷動態規劃
4.1 動態規劃核心原理
4.2 子序列類型問題
4.3 背包問題
4.4 用動態規劃玩遊戲
第 5 章 高頻面試系列
5.1 鏈結串列操作的遞迴思維一覽
5.2 田忌賽馬背後的演算法決策
5.3 一道陣列去重的演算法題把我整傻了
5.4 帶權重的隨機選擇演算法
5.5 二分搜尋題型策略分析
5.6 如何高效解決接雨水問題
5.7 一個函式解決 nSum 問題
5.8 一個方法解決最近公共祖先問題
1.1 學習資料結構和演算法的框架思維
1.2 電腦演算法的本質
1.3 動態規劃解題策略框架
1.4 回溯演算法解題策略框架
1.5 BFS 演算法解題策略框架
1.6 一步步帶你刷二元樹(綱領)
1.7 我寫了首詩,保你閉著眼睛都能寫出二分搜尋演算法
1.8 我寫了一個範本,把滑動視窗演算法變成了默寫題
第 2 章 一步步刷資料結構
2.1 陣列、鏈結串列
2.2 資料結構設計
第 3 章 一步步培養演算法思維
3.1 二元樹
3.2 二元搜尋樹
3.3 圖論演算法
3.4 暴力搜尋演算法
第 4 章 一步步刷動態規劃
4.1 動態規劃核心原理
4.2 子序列類型問題
4.3 背包問題
4.4 用動態規劃玩遊戲
第 5 章 高頻面試系列
5.1 鏈結串列操作的遞迴思維一覽
5.2 田忌賽馬背後的演算法決策
5.3 一道陣列去重的演算法題把我整傻了
5.4 帶權重的隨機選擇演算法
5.5 二分搜尋題型策略分析
5.6 如何高效解決接雨水問題
5.7 一個函式解決 nSum 問題
5.8 一個方法解決最近公共祖先問題
主題書展
更多
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。