26. 删除排序数组中的重复项

https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

解法一:

提示很明显了,答案只检测前k(去重后的元素个数)个位置,因此可以设两个指针i,j。i表示nums[0:i]是无重复部分,初始为0。j从1开始遍历数组,遇到与i不相等的元素就令i+1,并将该元素写入i(无重复部分的末尾)

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        n = len(nums)
        if n == 0:  #边界条件
            return 0
        i = 0    #无重复部分
        j = 1    #游标
        for j in range(1, n):
            if nums[j] != nums[i]:
                i += 1    #无重复部分扩张
                nums[i] = nums[j]
        return i+1

最后更新于