LeetCode #26 Remove Duplicates from Sorted Array

题目

Remove Duplicates from Sorted Array


解题方法

由于不允许采用额外存储空间,因此哈希表的方法不可用了,考虑按位换位置的方法。

暴力破解法是每遇到一个重复的数就把这个数之后的整个数组往前移一位,耗费时间较长,不建议使用。

双指针法的思想是遍历一遍数组,把找到的所有不与前一位数重复的数放到数组最前面,由于数组是排好序的,因此可以去掉所有重复的数。


代码

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if not len(nums) or len(nums) == 1:
            return len(nums)
        
        p, q = 1, 1
        while p < len(nums):
            if nums[p] != nums[p-1]:
                nums[q] = nums[p]
                q += 1
            p += 1
        
        return q
posted @ 2020-10-09 15:13  老鼠司令  阅读(61)  评论(0)    收藏  举报