给定一个已经排好序的整数数组,里面存在相同的元素,使相同的元素只保留一个。要求:只消耗O(1)的内存空间,在原数组上进行操作,返回新数组的有效长度,有效长度之外的元素可以为任意值。
例如:
给定数组:[1,1,2],使其变为:[1,2,X],有效长度为2,则返回值为2。
给定数组:[0,0,1,1,1,2,2,3,3,4],使其变为:[0,1,2,3,4,X,X,X,X,X], 有效长度为5,则返回值为5
##可以直接删除元素,在列表之后append(x),时间复杂度为O(n)
def uniqueArray(array):
if len(array) < 1:
print("空数组")
return 0
lenght = 1
i = 1
while i < len(array):
if not isinstance(array[i], int):
return lenght
if array[i] == array[i-1]:
del array[i]
array.append("X")
else:
lenght += 1
i += 1
return lenght
print(uniqueArray([0,0,1,1,1,2,2,3,3,4]))
print(uniqueArray([1, 2, 3, 4, 5, 6]))