(1)陣列、字元床優缺點
優點:構建乙個陣列非常簡單;能讓我們再o(1)的時間裡根據陣列的下標查詢某個元素
缺點:構建時必須分配一段連續的空間;查詢某個元素是否存在時需要遍歷整個陣列,耗費o(n)的時間;刪除和新增某個元素時,同樣需要耗費o(n)的時間
(2)鍊錶
單鏈表:鍊錶中的每個元素實際上是乙個單獨的物件,而所有的物件都通過每個元素中的引用字段鏈結在一起
雙鏈表:與單鏈表不同的是,雙鏈表的每個結點中都含有兩個引用字段
優點:靈活地分配記憶體空間;能在o(1)時間內刪除或者新增元素
缺點:查詢元素需要o(n)時間
解題技巧:利用快慢指標(有時需要三個指標);構建乙個虛假的煉表頭。例如:兩個排序鍊錶,進行整合排序;將鍊錶的奇偶數按原定順序分離,生成前半部分為奇數,後半部分為偶數的鍊錶
(3)棧
特點:後進先出
演算法基本思想:可以用乙個單鏈表來實現;只關心上一次操作;處理完上一次的操作後,能在o(1)時間內查詢到更前一次的操作
(4)佇列
特點:先進先出
常用場景:廣度優先搜尋
(5)雙端佇列
基本實現:可以利用乙個雙鏈表;佇列的頭尾兩端能在o(1)的時間內進行資料的檢視、新增和刪除
常用場景:實現乙個長度動態變化的視窗或者連續區間
(6)樹
樹的共性:結構直觀;通過樹問題來考查遞迴演算法掌握遞迴的熟練程度
面試中常考的樹的形狀有:
普通二叉樹
平衡二叉樹
完全二叉樹
二叉搜尋樹
四叉樹多叉樹
特殊的樹:紅黑樹、自平衡二叉搜尋樹
遍歷:前序遍歷;中序遍歷;後序遍歷
優先佇列
圖字首樹
線段樹樹狀陣列
(1)優先佇列
與普通佇列的區別:保證每次去除的元素是佇列中優先順序最高的;優先級別可自定義
最常用的場景:從雜亂無章的資料中按照一定的順序(或者優先順序)篩選資料
本質:二叉堆的結構,利用乙個陣列結構來實現完全二叉樹
特性:陣列裡的第乙個元素array[0]擁有最高的優先順序
給定乙個下標i,那麼對於元素array[i]而言,父節點對應的元素下標是(i-1)/2,左側子節點對應的元素下標是2i+1,右側子節點對應的元素下標是21+2
陣列中每個元素的優先順序都必須要高於它兩側子節點
基本操作有以下兩個:
向上篩選
向下篩選
另乙個最重要的時間複雜度:優先佇列的初始化
(2)圖
最基本的知識點如下:
階、度樹、森林、環
有向圖、無向圖、完全有向圖、完全無向圖
連通圖、連通分量
圖的儲存表達方式:鄰接矩陣、鄰接鍊錶
圖的演算法多式多樣:
圖的遍歷:深度優先,廣度優先
環的檢測:有向圖、無向圖
拓撲順序
最短路演算法
連通圖相關演算法
圖的著色、旅行商問題
必須掌握的知識點:
圖的儲存和表達方式:鄰接矩陣、鄰接鍊錶
圖的遍歷:深度優先,廣度優先
二部圖的檢測、樹的檢測、環的檢測:有向圖、無向圖
拓撲排序
聯合-查詢演算法
最短路徑
(3)字首樹
也稱為字典樹
這種資料結構被廣泛地應用在字典查詢當中
什麼是字典查詢
資料結構與演算法(1)
演算法 資料結構 一 演算法 1.演算法的幾個特徵是什麼。2.演算法複雜性的定義。大o 小o分別表示的含義。3.遞迴演算法的定義 遞迴演算法的兩要素。4.分治演算法的思想,經典的分治演算法 全排列 二分搜尋 歸併排序 快速排序 線性時間選擇 最接近點對問題 5.動態規劃演算法解題框架,動態規劃演算法...
資料結構與演算法(1)
1 線性表 2 棧 3 佇列 4 字串 補充 遞迴 1 樹與二叉樹 2 圖 1 查詢 2 排序 編寫相關演算法 資料結構 入門問題 1.為什麼學習資料結構?1 高階程式設計的理論指導 2 提公升編碼能力 3 面試中經常被問及,看發展潛力 2.有哪些資料結構?2.11線性結構 線性表 棧 佇列 陣列 ...
資料結構與演算法 1
cpu 處理器central process unit gpu 圖形處理器graphics processing unit,又稱顯示核心 視覺處理器 顯示晶元或繪圖晶元,是一種專門在個人電腦 工作站 遊戲機和一些移動裝置 如平板電腦 智慧型手機等 上執行繪圖運算工作的微處理器。其用途是將計算機系統所...