努力學(xué)習(xí)中
一、基礎(chǔ)算法
-
二叉查找——在
的時(shí)間內(nèi)尋找某一個(gè)具體值
-
計(jì)數(shù)排序——這是一種犧牲內(nèi)存空間來(lái)?yè)Q取低時(shí)間復(fù)雜度的排序算法,可以達(dá)到
時(shí)間復(fù)雜度
-
快速排序——對(duì)冒泡排序的一種改進(jìn),可以在最好和平均時(shí)間復(fù)雜度為
,最壞時(shí)間復(fù)雜度
-
桶排序——當(dāng)要被排序的數(shù)組內(nèi)的數(shù)值平局分配的時(shí)候,桶排序使用線性時(shí)間(
)
- 置換環(huán)——得到數(shù)組排序(可以指定排序方式)所需交換的最小次數(shù)
二、線性表
- 并查集——適用于解決一些元素的分組問(wèn)題
三、棧和隊(duì)列
- 單調(diào)隊(duì)列——解決滑動(dòng)窗口類問(wèn)題
- 單調(diào)棧——解決Next Greater Element(NGE)問(wèn)題
四、樹
- 二叉搜索樹——維護(hù)一個(gè)有序的數(shù)組,搜索前綴、后綴、最大值、最小值
- 平衡二叉搜索樹——使每個(gè)結(jié)點(diǎn)的左右兩顆子樹的高度差都不超過(guò)一
-
線段樹——用于維護(hù)區(qū)間信息,可以實(shí)現(xiàn)
的區(qū)間修改
- 二叉堆——適用于按大小取數(shù)的情況
五、圖
- 單源最短路徑-Dijkstra——解決正權(quán)圖的單源最短路徑問(wèn)題
六、字符串
-
字典樹——用來(lái)存儲(chǔ)和查詢字符串,利用字符串的公共前綴來(lái)減少查詢時(shí)間,同時(shí)可以利用字符串的
'后綴'+'$'+'前綴'形式完成前綴后綴的搜索 -
KMP字符串匹配算法——在
的時(shí)間復(fù)雜度內(nèi)在文本串中快速查找模式串
- 最長(zhǎng)公共子序列——利用動(dòng)態(tài)規(guī)劃查找兩個(gè)字符串的最長(zhǎng)公共子序列
-
確定有限狀態(tài)自動(dòng)機(jī)——求解給定的輸入字符串
S是否滿足條件P的問(wèn)題
七、動(dòng)態(tài)規(guī)劃
- 前綴和——數(shù)組的某下標(biāo)之前的所有數(shù)組元素的和,在單位時(shí)間內(nèi)求出單位和
- 線性動(dòng)態(tài)規(guī)劃——具有線性階段劃分的動(dòng)態(tài)規(guī)劃算法
- 區(qū)間動(dòng)態(tài)規(guī)劃——一個(gè)狀態(tài)通常由被它包含且比它更小的區(qū)間狀態(tài)轉(zhuǎn)移而來(lái)
- 樹形動(dòng)態(tài)規(guī)劃——根據(jù)樹形結(jié)構(gòu)進(jìn)行動(dòng)態(tài)規(guī)劃的算法
八、數(shù)學(xué)
- 最大公約數(shù)和最小公倍數(shù)——求解最大公約數(shù)和最小公倍數(shù)簡(jiǎn)潔版
- 同余及其性質(zhì)——數(shù)論中的一種等價(jià)關(guān)系
-
組合數(shù)的計(jì)算方法——從
個(gè)不同元素中取出個(gè)
元素的所有組合的個(gè)數(shù)
九、高頻面試題
參考文獻(xiàn):