问题描述
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。
不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。
解答方法
这是一个数组问题,先没有注意到数组是有序的,被报了超时。
class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
i=len(nums)
while i>0:
if nums[i-1] in nums[0:i-1]:
nums.pop(i-1)
i=i-1
return len(nums)
后面发现数组是有序的后,改进的代码为:
class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
i=len(nums)
if i == (0 or 1):
return i
while i>1:
if nums[i-1] ==nums[i-2]:
nums.pop(i-1)
i=i-1
return len(nums)