問題描述
給定一個(gè)有序數(shù)組,你需要原地刪除其中的重復(fù)內(nèi)容,使每個(gè)元素只出現(xiàn)一次,并返回新的長(zhǎng)度。
不要另外定義一個(gè)數(shù)組,您必須通過用 O(1) 額外內(nèi)存原地修改輸入的數(shù)組來做到這一點(diǎn)。
解答方法
這是一個(gè)數(shù)組問題,先沒有注意到數(shù)組是有序的,被報(bào)了超時(shí)。
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)
后面發(fā)現(xiàn)數(shù)組是有序的后,改進(jìn)的代碼為:
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)