题目
给定一个已排序的数组nums,就地删除重复项,以使每个元素仅出现一次并返回新的长度。 不要为另一个数组分配额外的空间,必须通过使用O(1)额外的内存就地修改输入数组来做到这一点。
知识点
- list.pop()
L.pop()
L.pop(2)
- del :
递归地删除目标列表将从左向右删除。
>>> l1 =[1,23,4]
>>> del l1[1]
>>> l1
[1, 4]
>>> del l1
>>> l1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'l1' is not defined
>>>
代码:
- 用for循环的方案, 140ms
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
new_len = 1
if len(nums)==0:
return 0
for i in range(1, len(nums)):
if nums[i] != nums[i-1]:
nums[new_len]= nums[i]
new_len += 1