美文网首页
LeetCode--删除排序数组中的重复项(python版)

LeetCode--删除排序数组中的重复项(python版)

作者: 猫爱吃草莓 | 来源:发表于2018-12-23 14:28 被阅读0次
class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        j=0
        if len(nums)==0:
            return 0
        for i in range(len(nums)):
            if nums[i]!=nums[j]:
                j=j+1
                nums[j]=nums[i]
                
        return j+1

官方解法:
数组完成排序后,我们可以放置两个指针 i 和 j,其中 i 是快指针,而 j 是慢指针。只要 nums[i] = nums[j],我们就增加 i 以跳过重复项。
当遇到 nums[i] 不等于 nums[j] 时,跳过重复项的运行已经结束,因此我们必须把它nums[i]的值复制到 nums[j + 1]。然后递增 i,接着我们将再次重复相同的过程,直到 j 到达数组的末尾为止。
ps: 这样就不需要考虑数组下标超界问题

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        j=1
        if len(nums)==0:
            return 0
        if len(nums)==1:
            return 1
        for i in range(len(nums)):
            if nums[j] > nums[i] :
                    j=j+1
                    if j==len(nums):
                        return j
                    
            else:
                if nums[i]>nums[j]:
                    nums[j]=nums[i]
                    nums[j+1]=nums[i]
                    j=j+1
        return j

重点:

  1. 考虑数组下标边界,防止index超界
  2. 考虑输入数组的边界情况,长度为0以及为1
  3. 双指针遍历

相关文章

网友评论

      本文标题:LeetCode--删除排序数组中的重复项(python版)

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