手把手帶你刷Leetcode力扣|各個(gè)擊破數(shù)據(jù)結(jié)構(gòu)和算法|大廠面試必備技能【已完

視頻主要內(nèi)容:如下圖



常用的數(shù)據(jù)結(jié)構(gòu)+常用算法,每個(gè)數(shù)據(jù)結(jié)構(gòu)或算法講解完之后,會(huì)有對(duì)應(yīng)的Leecode練習(xí)題講解,會(huì)給出解題思路和偽代碼,最后會(huì)以Java和Python為例給出解題代碼。
- 數(shù)據(jù)結(jié)構(gòu)
1.1 數(shù)組(Array)
- 定義
數(shù)組,在連續(xù)的內(nèi)存空間中存儲(chǔ)的一組相同類(lèi)型的元素。

- 元素與索引
索引與元素一一對(duì)應(yīng)。

- 訪(fǎng)問(wèn)和搜索
訪(fǎng)問(wèn):通過(guò)索引獲取元素。
搜索:搜索某個(gè)元素是否存在。

- 數(shù)組的時(shí)間復(fù)雜度

- 訪(fǎng)問(wèn)(Access)
時(shí)間復(fù)雜度:O(1)
原因:數(shù)組的元素在內(nèi)存中是連續(xù)的,因此每個(gè)元素的地址可以通過(guò)數(shù)學(xué)計(jì)算獲得,訪(fǎng)問(wèn)的時(shí)候就可以直接通過(guò)內(nèi)存地址直接獲得元素。

- 搜索(Search)
時(shí)間復(fù)雜度為:O(N)
原因:與訪(fǎng)問(wèn)不同,搜索的時(shí)候需要遍歷所有元素。
- 插入(Insert)
時(shí)間復(fù)雜度為:O(N)
原因:插入的時(shí)間復(fù)雜度由插入元素的位置決定,最壞的情況下(時(shí)間復(fù)雜度最大),有兩種:1. 在數(shù)組的開(kāi)頭插入元素,則數(shù)組中的每個(gè)元素都有往后移動(dòng)一位;2.插入元素時(shí),數(shù)組所在內(nèi)存空間不夠,需要重新把所有元素移到新的位置再插入。在以上兩種情況下插入元素,為保證數(shù)組中每個(gè)元素都是連續(xù)的,時(shí)間復(fù)雜度都為O(N)。

- 刪除(Delete)
時(shí)間復(fù)雜度為O(N)
原因:當(dāng)刪除開(kāi)頭的元素時(shí),需要把所有元素往前移。
- 數(shù)組的特點(diǎn)
讀多寫(xiě)少。

- 數(shù)組的常用操作
- 創(chuàng)建數(shù)組
- 添加元素
- 訪(fǎng)問(wèn)元素
- 修改元素
- 刪除元素
- 查找元素
- 數(shù)組的長(zhǎng)度
- 數(shù)組的排序(內(nèi)置的排序方法)

- 練習(xí)題
