2021-10-05

思路

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)

你可能感兴趣的:(2021-10-05)