给你一个有序数组 nums ,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
思路:用双指针,一个i来控制位置,j来遍历。
如果len(nums)<=2,说明前两个都符合要求,因为重复元素不超过两个。i用来控制位置,将nums[j]与nums[i-2]比较,如果不相等则将nums[j]移到i的位置上,即nums[i]=nums[j]。从0到i都是满足的,i到len(nums)都是不满足的,删除即可。
题解:
def remove_repeat_element(nums): n = len(nums) if n <= 2: return n i, j = 2, 2 while j < len(nums): if nums[i-2] != nums[j]: nums[i] = nums[j] i = i+1 j = j+1 for k in range (i,len(nums)): del nums[i] return i, nums
标签:删除,nums,元素,len,力扣,数组,80 From: https://www.cnblogs.com/lx173/p/17182934.html