代碼隨想錄集訓(xùn)營系列——day01
1.1什么是數(shù)組
????數(shù)組能夠順序存儲相同欸行的多個數(shù)據(jù),那么不難理解數(shù)據(jù)結(jié)構(gòu)中的線性表與其是對等的。
1.2 線性表
????邏輯上:除首元素之外其余元素都存在唯一的前驅(qū),除尾元素之外其余元素都用唯一的后繼。
????物理上:存在連續(xù)存儲以及離散存儲。
1.3 具體代碼
2.1 二分查找(折半查找法)704
????二分查找法有遞歸與迭代兩種形式,任意一種形式中又有對查找范圍的兩種定義。
在[left,right]的閉區(qū)間內(nèi)比較在數(shù)組array中 以 mid = (left+right )/2 為索引的數(shù)據(jù)與查找數(shù)據(jù)key的大小關(guān)系。根據(jù)大于、小于、等于可查抄范圍為[left,mid-1]、[mid+1,right]、return mid。注意:此處的left、和right是指索引長度。
在[left,right)的區(qū)間內(nèi)比較在數(shù)組array中 以?mid?=?(left+right?)/2 為索引的數(shù)據(jù)與查找數(shù)據(jù)key的大小關(guān)系。根據(jù)大于、小于、等于可查抄范圍為[left,mid)、[mid,right)、return?mid。注意:此處left、right指數(shù)組長度。
2.2移除元素 27
暴力求解法:時間復(fù)雜度O(
),空間復(fù)雜度O(1) or 時間復(fù)雜度O(n),空間復(fù)雜度O(n);在每一次迭代中進(jìn)行二次迭代or創(chuàng)建一個而外空間在存放符合要求的數(shù)據(jù)
雙指針法:時間復(fù)雜度O(n),空間復(fù)雜度O(1);left,right 類似上文中的二分查找法代表從[left,right)區(qū)間內(nèi)進(jìn)行swap(交換),算法的目的是將不符合要求的元素都放在左邊符合要求的元素放在右側(cè),從左往右找left需要指向符合要求的元素,從右往左找right需要找不符合要求的元素,然后對left和right索引的元素交換。注意:需要注意每次迭代中的邊界問題。