标题从排序数组中删除重复数
#给定一个排序数组,删除重复出现的元素(只能保留此元素的一个),这样新的数组中每个元素只出现一次,并返回这个新数组的长度。
解法一:时间+空间复杂度都是0(N)
def removeDuplicates(alist):
if not alist:
return 0
result=[]
for i in alist:
if i is not in result:
result.append(i):
n=len(result)
return n
解法二:时间复杂度为o(n),空间复杂度为o(1)
在同一个数组的基础上使用滑动窗口,替换来做。
def removeDuplicates(alist):
if not alist:
return 0
i = 0
n = len(alist)
#j要从第二个元素开始和第一个元素进行比较,i是用来维持删除后的数组指针。
for j in range(1,n):
if alist[i] != alist[j]:
i+=1
alist[i]=alist[j]
else:
continue
return i+1