題目描述
解題思路
本題的目的是返回不重複數組的長度,並且代碼能夠展示出原來的數組長度不變,前n個數是不重複的數,後幾個數與原數組對應的位置數值保持一致
解法一:雙指針法
對排序後的列表,首先放置兩個相鄰的指針 和 ,其中 是慢指針, 是快指針:
- 如果nums[i] == nums[j],則讓 跳過重複項
- 如果nums[i] != nums[j],則nums[j]的值賦值給nums[i+1],再遞增 和 ,直到列表的末尾,返回不重複數組的長度
python代碼
class Solution:
def removeDuplicates(self, nums):
if not nums: return 0
i = 0
for j in range(1, len(nums)):
if nums[i] != nums[j]:
i += 1
nums[i] = nums[j]
return i + 1
s = Solution()
print(s.removeDuplicates([1,1,2]))