給定一個排列好的列表,將它整理成重複項最多出現兩次,比方說以下
[1,1,1,2,2,3] -> [1,1,2,2,3, ...]
最後回傳整理完成的數量,比方說上面會回傳 5 (1, 1, 2, 2, 3)。
最後以下幾點要注意
只能修改該數組,利用的空間複雜度最多為1(意思就是不能創建新的數組append值)
不用管超過回傳值以後nums的值
"""
比方說輸入的 nums = [0,0,1,1,1,1,2,3,3]
那最後回傳值要等於7,且 nums[:7] 要等於 [0,0,1,1,2,3,3]
"""
用 head 紀錄當前元素,tmp紀錄元素重複幾次,接下來迴圈開始比較當前值與下一個值,
最後返回 head + 1 (因為head是下標值,非長度)
def removeDuplicates(self, nums) -> int:
head = 0
tmp = 0
for i in range(1, len(nums)):
if nums[i] != nums[head]:
head += 1
tmp = 0
nums[head] = nums[i]
else:
if tmp == 0:
head += 1
tmp += 1
nums[head] = nums[i]
return head + 1