题目:给你一个有序数组 nums
,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
本人的漂亮烂代码:虽然花了点时间,总算在一小时以内写完😂😂😂
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums) == 0:
return 0
elif len(nums) == 1:
return 1
elif len(nums) > 1:
index = 0
count = 0
for i in range(0, len(nums)):
if nums[i] != nums[index]:
count = 1
index += 1
nums[index] = nums[i]
elif nums[i] == nums[index]:
count += 1
if count == 1:
nums[index] = nums[i]
elif count == 2:
index += 1
nums[index] = nums[i]
nums = nums[:index+1]
return index+1
反思:
1、fast和slow指针都是从nums[0]开始比较,,所以有个单独的处理。之后的比较都是fast超前slow一个元素去比较,所以这里需要特别注意。
2、比较完之后若满足条件,slow指针后移1位后再赋值。
网友评论