每日leetcode(10)
26.删除排序数组中的重复项
今天的题如下
注意,这是个有序的数组,坑爹,我以为无序的,我说我的提交怎么一直超出时间限制。
这是用传统的思想做的,就是判断和下一个是否相同,相同就删除该元素,总长度减1。
class Solution:
def removeDuplicates(self,nums):
i=0
l=len(nums)
while i<l-1:
if nums[i]==nums[i+1]:
del nums[i]
l-=1
continue
i+=1
return len(nums)
可是这个最好只有84ms,50%多,不是很理想,大家注意看题目,改变nums是可以返回的,那就用直接改变nums的方法吧
class Solution:
def removeDuplicates(self,nums):
if not nums:
return 0
k=1
i=0
l=len(nums)
while i<l-1:
if nums[i]!=nums[i+1]
nums[k]=nums[i+1]
k+=1
i+=1
return k
这样总算好点了,70多ms