1. 程式人生 > 其它 >leetcode刷題總結(一)

leetcode刷題總結(一)

語言:Java && python,

我的做法:按 tag 刷,刷題同時熟悉資料結構,熟悉自帶的API,

以下tag:

連結串列(LinkedList): JDK中的LinkedList類,

特點:一個接一個,記憶體佔用較大

用途:快速增刪頭尾元素時可以考慮

 

棧(Stack):JDK8中為 Deque介面,用它作為棧使用,常用的為LinkedList,ArrayDeque,

特點:後進先出,

用途:詞法分析

 

佇列(Queue):JDK介面:Queue,不過一般我直接使用Deque,這是一個雙端佇列

特點:先進先出

用途:排隊

 

字典(Map):JDK介面:Map,常用的HashMap, TreeMap,LinkedHashMap,

特點:K-V組合,O(1)時間複雜度

用途:快取,空間換時間

 

堆(Heap):JDK介面:PrioryQueue

特點:按優先順序進行排序

用途:任務排隊

 

樹(Tree):JDK未帶此介面

特點:形成一種有層級的結構。類似於連結串列,不過變成了一個節點有兩個子節點

用途:檔案目錄儲存

 

圖(Graph): JDK未帶此介面

特點:點與點之間屬於多對多的關係

用途:地圖,

PS:有餘力可多學習,我未重點刷此tag

 

做題技巧:

動態規劃:重點是得到動態規劃方程(B站閆雪菜大佬視訊有講解)

二分查詢:注意邊界條件

雙指標(滑動視窗):滑動視窗也可以用雙指標的形式來實現,視窗定長或不定長均可

深度優先搜尋 && 廣度優先搜尋:感覺dfs更高頻,這兩種解法一般都出現在樹,矩陣,圖等題目中

遞迴(回溯):比如經典的八皇后問題,做題注意剪枝優化時間複雜度

快排:Top-K問題

字首陣列:顧名思義,多出現在Array,List題目中,隱約記得有道關於Tree的題也用到這種思路

位運算:計算優化,不會就最好別寫哈

 

設計:

比如設計庫表結構

設計某種資料結構等

 

多執行緒:

下篇~~~