標籤:插入 span 支援 概念 獲得 指定 元素 刪除 表示
資料結構和演算法基礎知識點
鏈表
1、鏈表是一種由節點群組成的線性資料集合,每個節點通過指標指向下一個節點。它是 一種由節點群組成,並能用於表示序列的資料結構。
2、單鏈表:每個節點僅指向下一個節點,最後一個節點指向空
3、雙鏈表:每個節點有兩個指標p,n。p指向前一個節點,n指向下一個節點,最後一個 節點指向空。
4、迴圈列表:每個節點指向下一個節點,最後一個節點指向第一個節點。
5、時間複雜度:索引:O(n),尋找:O(n),插入:O(1),刪除:O(1)
棧
1、棧是一個元素集合,支援兩個基本操作:push用於將元素壓入棧,pop用於刪除棧頂元素。
2、後進先出的資料結構
3、時間複雜度:同上
隊列
1、隊列是一個元素集合,支援兩種基本操作:enqueue用於添加一個元素到隊列, dequeue用於刪除
2、先進先出的資料結構
3、時間複雜度:同上
樹
1、樹是無向的聯通的無環圖
2、二叉樹:是一個樹形資料結構,每個節點最多可以有兩個子節點,稱為左子節點和 右子節點。
3、滿二叉樹:二叉樹中每個節點有0或者2個子節點。
4、完美二叉樹:二叉樹中每個節點有兩個子節點,並且所有的葉子節點的深度是一樣 的
5、完全二叉樹;二叉樹中除最後一層外,其他各層的節點數均達到最大值,最後一層 的節點都連續集中在最左邊。
二叉尋找樹
1、是一種二叉樹,其任何節點都大於等於左子樹中的值,小於等於右子樹中的值。
2、時間複雜度:索引尋找插入刪除均為O(log(n))
字典樹
1、又稱為基數樹或首碼樹,是一種用於儲存索引值為字串的動態集合或關聯陣列的查 找樹。樹中的節點並不直接儲存關聯索引值,而是該節點在樹中的位置決定了其關聯 索引值,一個節點的所有子節點都有相同的首碼,根節點則是Null 字元串。
數狀數組
1、又稱為二進位索引樹,其概念上是樹,但以數組實現,數組中的下標代表樹中的節 點,每個節點的父節點或子節點的下標可以通過運算獲得。數組中的 每個元素都 包含了預計算的區間值之和,在整個樹更新的過程中,這些計算的值也同樣會被更 新。
2、時間複雜度:區間求和:O(log(n)),更新:O(log(n))
線段樹
1、線段樹是用於儲存區間和線段的樹形資料結構。它允許尋找一個節點在若干條線段 中出現的次數。
2、時間複雜度:同上
堆
1、堆是一種基於樹的滿足某些特徵的資料結構,整個堆中的所有父子節點的索引值都滿 足相同的排序條件。堆分為最大堆和最小堆。在最大堆中,父節點的索引值永遠大於 所有子節點索引值,根節點的索引值是最大的。最小堆中,父節點的索引值永遠小於子節 點索引值,根節點的索引值是最小的。
2、時間複雜度:索引尋找插入刪除:同上,刪除最大最小:O(1)
雜湊
1、雜湊用於將任意長度的資料對應到固定長度的資料。雜湊函數的傳回值被稱為雜湊 值雜湊碼或者雜湊。如果不同的主鍵得到相同的雜湊值,則發生了衝突。
2、Hash Map:hashmap是一個儲存索引值關係的資料結構,hash map通過雜湊函數將鍵 值轉化為桶或者槽中的下標,從而便於指定值的尋找。
3、衝突解決:鏈地址法:在鏈地址法中,每個桶是相互獨立的,每個索引對應一個元 素列表。處理hashmap的時間就是尋找桶的時間與遍曆列表元素的時間之和。
開放地址法:在開放地址法中,當插入新值時,會判斷該值對應的雜湊桶是否存在, 如果存在則根據某種演算法依次選擇下一個可能的地址,直到找到一個未被佔用 的地址。開放地址即某個元素的位置並不永遠由其雜湊值決定。
圖
1、圖是G=(V,E)的有序對,其包括頂點或節點的集合V以及邊或弧的集合E,其中E包 括了兩個來自V的元素。
2、無向圖:圖的鄰接矩陣是對稱的,因此如果存在節點u到節點v的邊,那節點v到 節點u的邊也一定存在。
3、有向圖:圖的鄰接矩陣是非對稱的,因此如果存在。。。並不一定存在。。。
資料結構和演算法基礎知識點