系統(tǒng):Windows 7
軟件:Excel 2016
- 本系列參考LeetCode一些題目辛辨,將其進(jìn)行超級簡化僻焚,用VBA來解
Part 1: 題目
- 有一個正序數(shù)組全闷,刪除其中的重復(fù)項
- 測試示例:
- 數(shù)組1:
arr1 = Array(1, 5, 5, 10, 10, 26)
,去重結(jié)果arr10 = Array(1, 5, 10, 26)
- 數(shù)組2:
arr2 = Array(5, 5, 10, 10, 15, 26, 26)
羞福,去重結(jié)果arr20 = Array(5, 10, 15, 26)
- 數(shù)組1:
結(jié)果
1.png
Part 2: 解題邏輯
- 假設(shè)原數(shù)組為arr
- 新建一個數(shù)組newArr
- newArr索引從1開始計數(shù)来庭,設(shè)置其第1個元素取值為newArr(1)為arr的第1個元素
- 對arr的第2個元素到最后一個元素進(jìn)行循環(huán)
- 循環(huán)的每一個元素,與newArr的最后一個元素比對
- 如果不同榨崩,則將其寫入newArr
- 如果相同則不用寫入
Part 3:代碼
Sub main()
arr1 = Array(1, 5, 5, 10, 10, 26)
arr2 = Array(5, 5, 10, 10, 15, 26, 26)
arr10 = removeDuplicates(arr1)
arr20 = removeDuplicates(arr2)
End Sub
Function removeDuplicates(arr)
UCount = UBound(arr)
LCount = LBound(arr)
Dim newArr()
ReDim Preserve newArr(1 To 1)
newArr(1) = arr(LCount)
For i = LCount + 1 To UCount Step 1
ele = arr(i)
newUCount = UBound(newArr)
lastEle = newArr(newUCount)
If ele <> lastEle Then
newUCount = newUCount + 1
ReDim Preserve newArr(1 To newUCount)
newArr(newUCount) = ele
End If
Next i
removeDuplicates = newArr
End Function
代碼截圖
2.png
Part 4: 部分代碼說明
-
ReDim Preserve newArr(1 To newUCount)
保留數(shù)組原有的數(shù)值,并修改其索引范圍 -
newArr(newUCount) = ele
金蜀,數(shù)組的第newUCount索引位置取值ele
Ps:沒有經(jīng)過充分論證,可能在某些情況下不成立,歡迎留言
- 更多學(xué)習(xí)交流强经,可加小編微信號
learningBin
更多精彩炬称,請關(guān)注微信公眾號
掃描二維碼棘利,關(guān)注本公眾號
公眾號底部二維碼.jpg