常用資料結構的使用技巧

2021-10-20 22:20:53 字數 1321 閱讀 9520

很多時候需要對字串中的每乙個字元進行處理,有時候會先將其轉為字元陣列。

舉個簡單的例子,假設需要翻轉乙個字串,可以使用兩個指標,乙個指向第乙個字元,乙個指向最後乙個字元,然後進行交換,交換完成後兩個指標向**一步一步靠攏並進行交換,直到兩個指標相遇。因為無法修改字串中的字元,所以需要先將其轉為字元陣列。

陣列的優點:

陣列的缺點:

經典題目:力扣第242題(有效的字母異位詞)

鍊錶是為了彌補陣列的缺陷,即分配陣列的時候需要開闢一段連續的記憶體空間,但也犧牲了一些陣列的優點,如鍊表不能通過下標快速的查詢,所以在考慮是否使用鍊錶時,先考慮演算法是否要經常進行查詢。

鍊錶的優點:

鍊錶的缺點:

鍊錶的經典解題技巧:

建議在解決鍊錶的題目時在紙上或者白板上畫出節點之間的相互關係,畫出修改的方法。

經典題目:力扣第25題(k個一組翻轉鍊錶)

棧的最大特點就是後進先出,所有操作(查詢,壓入資料,彈出資料)都是在棧的頂部完成的,因此可以使用乙個單鏈表來實現棧的資料結構,由於只針對棧頂元素,所以借用單鏈表的頭就可以讓所有棧的操作在o(1)時間內完成。

一般情況下如果只關心上一次的操作或者處理完上一次操作後,能在o(1)時間內查詢到更前一次的操作,這個時候就可以使用棧。

經典題目:力扣第20題(有效的括號),力扣第739題(每日溫度)

佇列的最大特點就是先進先出,只允許在隊尾檢視和新增資料,在隊頭檢視和刪除資料。可以借助雙鏈表實現佇列,雙鏈表頭指標允許在隊頭查詢和刪除資料,雙鏈表尾指標允許在隊尾查詢和新增資料。

一般如果我們需要按照一定的順序來處理資料,且要處理的資料在不斷變化時使用佇列,在演算法中最常用的場景就是廣度優先搜尋

雙端佇列與佇列相比,可以在佇列的頭尾兩端進行資料的檢視,新增,刪除。可以同樣借助雙鏈表實現。

雙端佇列最常用的地方就是實現乙個長度動態變化的視窗或者連續區間。

經典題目:力扣第239題(滑動視窗最大值)

樹的結構直觀,主要考察的就是遞迴演算法。

常見的樹的形狀:

特殊的樹:紅黑樹,自平衡二叉搜尋樹

樹的遍歷:

經典題目:力扣第230題(二叉搜尋中第k小的元素)

資料結構常用技巧

1 如何尋找陣列中最大最小值 2 如何找出陣列中第二大的數 3 如何求最大子陣列之和 4 如何找出陣列中重複元素最多的數 5 如何求陣列中兩兩相加等於20的組合種數 6 如何把乙個陣列迴圈右移k位 7 如何找出陣列中第k個最小的數 8 如何找出陣列中只出現一次的數 9 如何找出陣列中唯一的重複元素 ...

常用的資料結構

人們常說資料結構,面試的時候也常被問道資料結構相關的問題,到底什麼是資料結構?資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。資料結構在計算機...

常用的資料結構

1.資料元素相互之間的關係稱為結構。2.四類基本結構 集合 線性結構 樹形結構 圖狀結構 1 集合結構 除了同屬於一種型別外,別無其它關係 2 線性結構 元素之間存在一對一關係常見型別有 陣列,鍊錶,佇列,棧,它們之間在操作上有所區別.例如 鍊錶可在任意位置插入或刪除元素,而佇列在隊尾插入元素,隊頭...