優點:
1.構建乙個陣列非常簡單、
2.能讓我們在 o(1)的時間裡根據陣列的下標(index)查詢某個元素
缺點:
1.構建時必須分配一段連續的空間
2.查詢某個元素是否存在時需要遍歷整個陣列,耗費o(n)的時間(n 為元素的個數)
3.刪除和新增某個元素時,同樣需要耗費o(n)的時間
力扣練習242:
給定兩個字串s和t,編寫乙個函式來判斷t是否是s的異位詞。(假設字串只包含小寫字母)
思路:1.利用兩個長度都為26的字元陣列,來統計每個字串中字母出現的次數,再對比看是否相等。
2.利用乙個長度為26的字元陣列,將出現在s裡的字元數加一,將出現在t中的數減一,最後判斷結果字元個數是否為0
鍊錶的出現,在某種程度上,是為了解決在分配陣列時需要開闢連續記憶體空間的問題。
單鏈表:鍊錶中的每個元素實際上是乙個單獨的物件,而所有物件都通過每個元素的引用字段鏈結在一起。
雙鏈表:與單鏈表不同的是,雙鏈表的每個結點中都含有兩個引用字段。
優點:
1.靈活分配記憶體空間
2.能在o(1)時間內新增或者刪除元素
缺點:
查詢元素需要o(n)的時間
解題技巧·:
利用快慢指標
構建乙個虛假的煉表頭
在白板上畫出節點之間的相互關係 ,再畫出修改的方法
力扣練習25:k個一組翻轉鍊錶
示例: 1->2->3->4->5
k=2時:2->1->4->3->5
k=3時:3->2->1->4->5
特點:
後進先出 (lifo)
演算法基本思想
可以用乙個單鏈表來實現
只關心上一次的操作
處理完上一次的操作之後,能在o(1)時間內查詢到更前一次的操作
力扣練習739:每日溫度 棧
特點:
先進先出 (fifo)
允許在隊尾檢視和新增資料,在隊頭檢視和刪除資料
演算法基本思想
雙向鍊錶
常用的場景『
廣度優先搜尋
基本實現
可以利用乙個雙鏈表
佇列的頭尾兩端能在o(1)的時間內進行資料的檢視、新增和刪除
常用的場景
實現乙個長度動態變化的視窗或者連續的區間
力扣練習239:滑動視窗的最大值
樹的共性
結構直觀
通過樹的問題來考察 遞迴演算法 掌握的熟練程度
遍歷:
前序遍歷:
中序遍歷:
後序遍歷:
資料結構與演算法(一)常用資料結構
什麼是資料 資料元素 資料項 資料物件 資料型別?資料 萬物都是資料,資料就是能輸入計算機和被程式處理的符號 資料元素 資料元素是資料的基本單位 是具體的資料 每乙個學生的資訊就是乙個資料元素 資料項 乙個資料元素由若干個資料項構成 學生的姓名 學號等都是學生資訊資料元素的乙個資料項 資料物件 具有...
常用資料結構
文章參考 資料結構 c語言版 嚴蔚敏 線性表 有頭有尾,中間節點有前驅有後繼 定義 一組連續的儲存單元依次儲存線性表的資料元素。定長順序表 typedef struct sqlist psqlist 不定長順序表 typedef struct dsqlist dsqlist,pdsqlist 單鏈表...
常用資料結構
function delete array element arr,pos for i pos 1 i length 1 i array pop arr return arr pos 3 echo 除第位置上的元素後 echo implode delete array element arr,pos...