删除排列数组中的重复项
作者:互联网
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 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
标签:删除,nums,重复,len,数组,移除,自加 来源: https://blog.csdn.net/ingenuou_/article/details/98464103