思路
1、排序
2、双指针,一个遍历,一个记录新数组的末尾索引
代码
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
# 双指针
n = len(nums)
i, j = 0, -1 # i遍历,j记录当前不重复的序列的末尾索引
preNum = float('-inf') # 记录前一个元素,需要先排序,把重复元素放在一起遍历
nums.sort()
while i < n:
if nums[i] != preNum:
preNum = nums[i]
j += 1
nums[j] = nums[i]
i += 1
return j + 1
复杂度
时间复杂度:o(nlogn)
空间复杂度:o(1)