Follow up for "Remove Duplicates":
What if duplicates are allowed at most
twice?
For example,
Given sorted array nums = [1,1,1,2,2,3]
,
Your function should return length = 5
, with the first five elements of nums being 1
, 1
, 2
, 2
and 3
. It doesn't matter what you leave beyond the new length.
Subscribe to see which companies asked this question
跟前一道题倒是没什么太大差别,修改一下判断条件。
最后面的一个元素的处理容易出问题
class Solution(object):
def removeDuplicates(self, nums):
l = len(nums)
if l <= 2:
return l
index = 0
i = 0
while i<l:
if i+1<l and nums[i] != nums[i + 1]:
nums[index] = nums[i]
index += 1
i += 1
continue
elif i+1 == l:
nums[index] = nums[i]
index += 1
return index
else:
temp = nums[i]
if index >= l-1:
nums[index] = temp
return l
else:
nums[index],nums[index+1] = temp,temp
i += 2
index += 2
if index > l-1:
return l
while i < l and nums[i] == temp:
i += 1
#print index,i,nums
#print nums
return index
"""
:type nums: List[int]
:rtype: int
"""