Q:给你一个有序数组nums ,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。
第一种解决方法:
def removeElement(nums, val):if not nums:return 0left, right = 0, len(nums) - 1while left <= right:if nums[left] == val:# 移动右侧非目标值元素到左侧while right >= left and nums[right] == val:right -= 1if right > left:nums[left] = nums[right]left += 1else:left += 1return left
第二种算法:
def removeDuplicates(self, nums):left = 1for right in range(2, len(nums)):if nums[left] == nums[right] == nums[left-1]:continueelse:left += 1nums[left] = nums[right]return left + 1
两种查找算法思想并不相同。