天天看點

Learning algorithem the hard way begining (part 1)

10000 小時法則

Learning algorithem the hard way begining (part 1)

根據《異類-不一樣的成功啟示錄》一書中的描述,要想在任何一個領域當中稱為專家,都必須經過 10000 小時的刻意練習。具體的方法包括:

Chunk it up

将待學習的領域切分為細化的知識點。在資料結構和算法領域,必須掌握的包括:

資料結構

Array

LinkedList

Stack/Queue

PriorityQueue

HashTable

Tree/Binary Tree/Binary Search Tree

Heap

Skip List

Graph

Trie Tree

BloomFilter

LRU Cache

算法

遞歸

排序

二分查找

搜尋

雜湊演算法

貪心算法

分治算法

回溯算法

動态規劃

字元串比對算法

Deliberate practicing

刻意練習。刻意地,反複地練習相關領域的知識點。在初期地時候,它可能帶給你的直接感受是:不舒服、不爽、枯燥,但是隻要能夠堅持下來長期練習,必定能夠獲得成功。

Feedback

獲得回報。學習相關領域時,在擷取回報時需要注意如下的幾點:

及時地擷取回報

主動型回報(主動擷取)

閱讀别人寫的代碼(Github、Leetcode)

Gogole

被動型回報 (等待高人給予指點)

Code Review

Big-O Complexity Chart

如下圖,可以直覺得看到不同的時間複雜度的漸進關系:

Learning algorithem the hard way begining (part 1)

Common Data Structure Operations

下圖展示了常見的資料結構中,對應的常見時間和空間複雜度:

Learning algorithem the hard way begining (part 1)

Array Sorting Algorithms

下圖展示了常見的排序算法的時間和空間複雜度:

Learning algorithem the hard way begining (part 1)

All in one

Learning algorithem the hard way begining (part 1)

繼續閱讀