1.二叉樹的前序,中序,後序遍歷,遞歸和非遞歸的寫法
2.一個數組,把其中奇數放在左邊,偶數放在右邊,不要求滿足原始序列關係,要求inplace 時間On 空間O1
3.紅黑樹簡單介紹一下,內部實現原理,主要用來做什麼?
4.鏈表相關算法題
- 一個鏈表如何找中間點
- 鏈表如何判斷是否有環
- 如果有環如何找到環的起點
- 兩個鏈表如何判斷是否有公共部分
- D情況下如果鏈表有環怎麼辦
- E情況下怎麼找環的起點和公共部分起點
5.計算n的三次根號的值。(如果只能用梯度下降怎麼做)
6.一個字符串中,有數字、字母、符號,求最長數字序列;求最長的、最多包含一個字母的數字序列。
7.64匹馬,8個賽道,假設每匹馬發揮穩定且沒有體力問題,如果在用最少的比賽次數,選出跑的最快的8匹馬?1024瓶毒藥,10只老鼠的題。
9.leetcode二叉樹題目中,可以自定義輸入,輸入一個list(默認完全二叉樹,如果節點爲空,則輸入None),解析爲一個二叉樹的數據結構。
10.最大子串(動態規劃)
11.n乘n矩陣,每個點是任意整數,輸出和爲最大的子矩陣內所有數的和,最優解複雜度n^3
12.二叉樹層序遍歷
13.內存拷貝,實現函數void memcpy(char* src, char* dest, int len);
需要考慮兩個指針在長度len範圍內有重疊的現象。
14.無序數組,找出最大值最小值 我的複雜度是2n,他說有複雜度是n的算法。
15.對很多圖像的特徵(1024維)進行檢索,有什麼壓縮的方法嗎?壓縮精度:float32->int 8
16.對多個文件,文件存儲了很多浮點數,要求內存不超過2G,但是每個文件都大於2G,怎麼排序?
17.手寫洗牌算法:N張牌等概率出現在每個位置
18.判斷鏈表是否有環(快慢指針)
19.判斷平衡二叉樹(我只想到了最麻煩的層次遍歷數葉子節點所在層數)
20.走一截臺階還是兩節臺階, f(n)=f(n-1)+f(n-2)的這種(遞歸,DP,推薦直接說DP的方案)
21.股票交易記錄求最大的買入和賣出的差值
22.1-N的所有素數,爲什麼要求根號,還有沒有更優解?
23. 紅黑樹,B+,平衡二叉樹
24.鏈表排序和top k問題
25. 三種常見的最短路徑算法;狄傑斯特拉,普里姆,弗洛依德算法
(1)深度優先搜索和廣度優先搜索(解決單源最短路徑, 正權邊)
從起始結點開始訪問所有的深度遍歷路徑或廣度優先路徑,則到達終點結點的路徑有多條,取其中路徑權值最短的一條則爲最短路徑。
(2)弗洛依德算法(解決單多源最短路徑, 正權邊)
基本思想:最開始只允許經過1號頂點進行中轉,接下來只允許經過1號和2號頂點進行中轉......允許經過1~n號所有頂點進行中轉,來不斷動態更新任意兩點之間的最短路程。即求從i號頂點到j號頂點只經過前k號點的最短路程。
(3)狄傑斯特拉(解決單源最短路徑, 正權邊)
基本思想:每次找到離源點(如1號結點)最近的一個頂點,然後以該頂點爲中心進行擴展,最終得到源點到其餘所有點的最短路徑。
基本步驟:
1)設置標記數組book[]:將所有的頂點分爲兩部分,已知最短路徑的頂點集合P和未知最短路徑的頂點集合Q,很顯然最開始集合P只有源點一個頂點。book[i]爲1表示在集合P中;
2)設置最短路徑數組dst[]並不斷更新:初始狀態下,令dst[i] = edge[s][i](s爲源點,edge爲鄰接矩陣),很顯然此時dst[s]=0,book[s]=1。此時,在集合Q中可選擇一個離源點s最近的頂點u加入到P中。並依據以u爲新的中心點,對每一條邊進行鬆弛操作(鬆弛是指由結點s-->j的途中可以經過點u,並令dst[j]=min{dst[j], dst[u]+edge[u][j]}),並令book[u]=1;
3)在集合Q中再次選擇一個離源點s最近的頂點v加入到P中。並依據v爲新的中心點,對每一條邊進行鬆弛操作(即dst[j]=min{dst[j], dst[v]+edge[v][j]}),並令book[v]=1;
4)重複3,直至集合Q爲空。
(4)Bellman-Ford算法(解決負權邊,解決單源最短路徑,前幾種方法不能求含負權邊的圖)::時間複雜度O(nm),空間複雜度O(m)
主要思想:對所有的邊進行n-1輪鬆弛操作,因爲在一個含有n個頂點的圖中,任意兩點之間的最短路徑最多包含n-1邊。換句話說,第1輪在對所有的邊進行鬆弛後,得到的是從1號頂點只能經過一條邊到達其餘各定點的最短路徑長度。第2輪在對所有的邊進行鬆弛後,得到的是從1號頂點只能經過兩條邊到達其餘各定點的最短路徑長度。。。。。
Bellman_Ford還可以檢測一個圖是否含有負權迴路:如果在進行n-1輪鬆弛後仍然存在dst[e[i]] > dst[s[i]]+w[i]。
推薦:https://blog.csdn.net/wzy_2017/article/details/78910697
26.最小生成樹 prim算法和Kruskal算法
(1)Prim 算法(以定點爲中心的最小生成樹)
(2)Kruskal 算法(以邊爲中心的最小生成樹算法)
26.最小生成樹 prim算法和Kruskal算法
拓撲排序的基礎:有向無環圖,它是描述一項工程進度的有效工具。
用頂點表示活動,用弧表示活動間優先關係的有向圖稱爲頂點表示活動的網(Activity On Vertex network),簡稱AOV網
在AOV網中,完成工程的最短時間:從開始點到完成點的最長路徑長度——關鍵路徑。
參考博客:
https://blog.csdn.net/matrix_laboratory/article/details/11879127