删除排序数组中的重复项
目录
删除排序数组中的重复项
删除排序数组中的重复项1
题目:
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
思路:
双指针,定义 nums[0...i] 为为非重复数列,遍历整个数列不断的维护这个定义
代码:
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
= 0
start for i in range(len(nums)):
if nums[i] != nums[start]:
+= 1
start = nums[start],nums[i]
nums[i],nums[start] return start + 1
删除排序数组中的重复项2
题目:
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/
思路:
也是利用双指针,一个指针用于遍历数组元素,一个指针指向要拷贝赋值的索引位置
代码:
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums) <= 2: #长度小于等于2时
return len(nums)
= 1 #用于重复的计数
count = 1 #指向多余重复的元素
j for i in range(1,len(nums)):
if nums[i] == nums[i-1]:
+= 1 #重复了就加一
count if count > 2: #如果重复两次以上就pass掉,等着被替换
pass
else:
= nums[i]
nums[j] += 1
j else:
= nums[i] #如果不相等了 把多余重复的那个替换掉了
nums[j] = 1 #重置计数
count += 1
j return j
这是一种思路比较清晰的写法