#給定乙個排序陣列,刪除重複出現的元素(只能保留此元素的乙個),這樣新的陣列中每個元素只出現一次,並返回這個新陣列的長度。
解法一:時間+空間複雜度都是0(n)
def
removeduplicates
(alist):if
not alist:
return
0 result=
for i in alist:
if i is
notin result:
: n=
len(result)
return n
解法二:時間複雜度為o(n),空間複雜度為o(1)
在同乙個陣列的基礎上使用滑動視窗,替換來做。
def
removeduplicates
(alist):if
not alist:
return
0 i =
0 n =
len(alist)
#j要從第二個元素開始和第乙個元素進行比較,i是用來維持刪除後的陣列指標。
for j in
range(1
,n):
if alist[i]
!= alist[j]
: i+=
1 alist[i]
=alist[j]
else
:continue
return i+
1
LC 有序陣列刪除重複數字
給定乙個已排序的陣列,使用就地演算法將重複的數字移除,使陣列中的每個元素只出現一次,返回新陣列的長度。不能為陣列分配額外的空間,你必須使用常熟級空間複雜度的就地演算法。例如,給定輸入陣列 a 1,1,2 你給出的函式應該返回length 2,a陣列現在是 1,2 include using name...
LC 有序陣列刪除重複數字
給定乙個已排序的陣列,使用就地演算法將重複的數字移除,使陣列中的每個元素只出現一次,返回新陣列的長度。不能為陣列分配額外的空間,你必須使用常熟級空間複雜度的就地演算法。例如,給定輸入陣列 a 1,1,2 你給出的函式應該返回length 2,a陣列現在是 1,2 include using name...
刪除重複資料
介紹兩種刪除重複行的方式 1.使用臨時表,分組找出重複部分的id進行刪除 刪除table goods info 中存在重複goods id的記錄 select identity int,1,1 as autoid,into temptable from goods info select min a...