删除排列数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

执行用时 :128 ms, 在所有 Python3 提交中击败了33.79% 的用户
内存消耗 :15.3 MB, 在所有 Python3 提交中击败了5.25%的用户

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if len(nums)==0|len(nums)==1:
            return len(nums)
        a,b=0,1
        while b<len(nums):
            if nums[a]!=nums[b]:
                nums[a+1]=nums[b]
                a+=1
                b+=1
            else:
                b+=1
        return a+1

首先判断两种特殊情况,一种是nums数组为空,另一种nums中只有一个元素
a从0开始,b从1开始,
如果nums[a]不等于nums[b],则证明nums[b]不是重复项,将nums[b]赋值给nums[a+1],a,b
指针分别指向下一个(a自加一,b自加一)
否则,仅仅将指针移向b的下一个(b自加一)
在循环中将不重复项赋值给nums[a+1],所以返回移除后数组的新长度,返回的是a+1
算法题来自:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

发布了30 篇原创文章 · 获赞 8 · 访问量 1831

猜你喜欢

转载自blog.csdn.net/ingenuou_/article/details/98464103