第十二屆 佳作

software-dev
你總是躲不掉的,不如放膽面對 LeetCode 吧!
維特的兩條腿

系列文章

DAY 21

Day 21: Graph

這是什麼? 探討多個點之間如何聯繫,例如最快速抵達某點?聯繫之間可以補上參數,進而修改最佳路徑。 是不是很有既視感?Google Map 的確使用 Graph...

DAY 22

Day 22: Graph - Breadth-First Search(BFS)

這是什麼 Tree 的一種演算法,BFS 的精神是,找尋的順序是一層一層,每層節點都有搜尋過。 首先想像有一個樹長這樣子: 如果是 BFS,會這樣搜尋: A...

DAY 23

Day 23: Graph - Depth-First Search(DFS)

這是什麼 Tree 的一種演算法,DFS 的精神是,找尋的順序是隨著子節點,一層一層往下找,直到碰觸 Leaf 確認沒找到後,回到父節點,此時,如果有其他子節點...

DAY 24

Day 24: Graph - Topological Sort

這是什麼? Graph 內,針對有向圖的節點,進行 Linear Sort。執行前有一點要遵守:如果該節點有個指向自己的節點,將視為執行該節點的條件,因此要執行...

DAY 25

Day 25: Hash Table

這是什麼 LeetCode 運用 Hash Function 的知識來解題。這邊提一下 Hash Function 的功能: 一串資訊(文字、數字等)經過 ha...

DAY 26

Day 26: Recursion, Recursive Function

這是什麼 簡單來說,函式(Function)呼叫自己的操作方式,在之前 DFS 解題時便採用這方法來搜尋節點。 遞迴有趣的地方有兩點: 理論上遞迴(Recur...

DAY 27

Day 27: Memoization

這是什麼 記憶法,意味著演算法在執行過程當中,隨時儲存計算過的數值。 Memoization 是 Dynamic Programming 的前置作業,趁現在刷一...

DAY 28

Day 28: Divide and Conquer

這是什麼 分而治之,分治法! 分治法的步驟是: 將一個問題拆解成多個可以處理的小問題後 處理、擊破每個小問題後 收集每個小問題的答案,組合出最後的答案。...

DAY 29

Day 29: Dynamic Programming, DP

這是什麼 Memoization + Divide and Conquer = Dynamic Programming 動態規劃的目的,是藉由記憶體儲存計算...

DAY 30

Day 30: Greedy Method

這是什麼 貪婪法,精神在於有限的條件下,每一步都採取對於當下最有利的選擇(短視近利),使狀態更接近答案。 舉現實的例子,股票漲就買、跌就賣的散戶心態,可以稱作貪...