常見的數據結構:
1、數組
數組是最簡單、也是使用最廣泛的數據結構。棧、隊列等其他數據結構均由數組演變而來。
面試中關於數組的常見問題:
- 尋找數組中第二小的元素
- 找到數組中第一個不重複出現的整數
- 合併兩個有序數組
- 重新排列數組中的正值和負值
2、棧
面試中關於棧的常見問題:
- 使用棧計算後綴表達式
- 對棧的元素進行排序
- 判斷表達式是否括號平衡
3、隊列
與棧相似,隊列是另一種順序存儲元素的線性數據結構。棧與隊列的最大差別在於棧是LIFO(後進先出),而隊列是FIFO,即先進先出。
面試中關於隊列的常見問題
- 使用隊列表示棧
- 對隊列的前k個元素倒序
- 使用隊列生成從1到n的二進制數
4、鏈表
鏈表就像一個節點鏈,其中每個節點包含着數據和指向後續節點的指針。 鏈表還包含一個頭指針,它指向鏈表的第一個元素,但當列表爲空時,它指向null或無具體內容。鏈表一般用於實現文件系統、哈希表和鄰接表。
面試中關於鏈表的常見問題
- 反轉鏈表
- 檢測鏈表中的循環
- 返回鏈表倒數第N個節點
- 刪除鏈表中的重複項
5、樹
樹形結構是一種層級式的數據結構,由頂點(節點)和連接它們的邊組成。 樹類似於圖,但區分樹和圖的重要特徵是樹中不存在環路。
面試中關於樹結構的常見問題:
- 求二叉樹的高度
- 在二叉搜索樹中
- 查找第k個最大值查找與根節點距離k的節點
- 在二叉樹中查找給定節點的祖先節點
6、圖
圖是一組以網絡形式相互連接的節點。節點也稱爲頂點。 一對節點(x,y)稱爲邊(edge),表示頂點x連接到頂點y。邊可以包含權重/成本,顯示從頂點x到y所需的成本。
面試中關於圖的常見問題
- 實現廣度和深度優先搜索
- 檢查圖是否爲樹
- 計算圖的邊數
- 找到兩個頂點之間的最短路徑
7、字典樹
字典樹,也稱爲“前綴樹”,是一種特殊的樹狀數據結構,對於解決字符串相關問題非常有效。它能夠提供快速檢索,主要用於搜索字典中的單詞,在搜索引擎中自動提供建議,甚至被用於IP的路由。
面試中關於字典樹的常見問題
- 計算字典樹中的總單詞數
- 打印存儲在字典樹中的所有單詞
- 使用字典樹對數組的元素進行排序
- 使用字典樹從字典中形成單詞構建T9字典(字典樹+ DFS )
8、散列表(哈希表)
哈希法(Hashing)是一個用於唯一標識對象並將每個對象存儲在一些預先計算的唯一索引(稱爲“鍵(key)”)中的過程。因此,對象以鍵值對的形式存儲,這些鍵值對的集合被稱爲“字典”。可以使用鍵搜索每個對象。基於哈希法有很多不同的數據結構,但最常用的數據結構是哈希表。哈希表通常使用數組實現。
面試中關於哈希結構的常見問題:
- 在數組中查找對稱鍵值對
- 追蹤遍歷的完整路徑
- 查找數組是否是另一個數組的子集
- 檢查給定的數組是否不相交