LeetCode-Remove Element-从排序数组中删除重复项

描述:

给定一个有序数组,你须要原地删除其中的重复内容,使每一个元素只出现一次,并返回新的长度。
不要另外定义一个数组,您必须经过用 O(1) 额外内存原地修改输入的数组来作到这一点。
示例:数组

给定数组: nums = [1,1,2],
你的函数应该返回新长度 2, 而且原数组nums的前两个元素必须是1和2
不须要理会新的数组长度后面的元素

实现

重复的须要去掉,无非就是遍历数组,发现重复,就把后面的往前移,把重复值覆盖掉。具体说,能够维护2个指针,慢指针开始指向数组第一个元素,快指针指向第二个元素,而后快指针不断判断本身当前元素和前一个元素是否相同,相同则快指针后移,不相同则将当前值赋值给慢指针的后一个元素,慢指针后移。最后慢指针指向的元素及前面全部元素都是不重复的。具体过程参考以下代码和注释:函数

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) <= 1:
            return len(nums)

        s = 0

        for f in range(1, len(nums)):
            if nums[s] != nums[f]:
                s += 1
                nums[s] = nums[f]
        return s + 1
相关文章
相关标签/搜索