Remove Duplicates from Sorted Array
从有序数组中删除重复元素。
基本题目
26. Remove Duplicates from Sorted Array
题目:
从有序数组中去除重复元素。
如 [1,1,1,2,2,3] => [1,2,3]
思路:
维护指针j,表示数组去重后最后一个元素的位置,初始-1。
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums) == 0:
return 0
last, j = nums[0] - 1, -1
for i in range(0, len(nums)):
if nums[i] != last:
nums[j + 1] = nums[i]
j += 1
last = nums[i]
return j + 1
升级题目
80. Remove Duplicates from Sorted Array II
题目:
从有序数组中去除重复元素,使得元素最多重复两次。
如 [1,1,1,2,2,3] => [1,1,2,2,3]
思路:
只需要更改下判锻是否重复的规则,改为出现超过两次为重复,进行删除。
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums) == 0:
return 0
last, j = nums[0] - 1, -1
existCount = 0
for i in range(0, len(nums)):
if nums[i] != last:
nums[j + 1] = nums[i]
j += 1
last = nums[i]
existCount = 1
elif existCount == 1:
nums[j + 1] = nums[i]
j += 1
existCount += 1
return j + 1