美文网首页北美程序员面试干货
LeetCode 26 [Remove Duplicates f

LeetCode 26 [Remove Duplicates f

作者: Jason_Yuan | 来源:发表于2016-08-09 17:28 被阅读43次

原题

给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

样例
给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]

解题思路

  • 使用一个指针length记录当前位置,即该写入到哪里
  • 使用一个prev记录之前的值,每次比较:
  • 如果与之前的值不同,把当前值写入length的位置,length += 1
  • 如果与之前值相同,继续

完整代码

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        prev = None
        length = 0
        for num in nums:
            if num != prev:
                prev = num
                nums[length] = num
                length += 1
        return length

相关文章

网友评论

    本文标题:LeetCode 26 [Remove Duplicates f

    本文链接:https://www.haomeiwen.com/subject/pasdsttx.html