删除有序数组中的重复项
class Solution:def removeDuplicates(self, nums: List[int]) -> int:# 处理边界数据if not nums: return 0if len(nums) == 1: return 1# 两个指针,一个记录当前有多少个不重复值的个数,一个记录最新遍历到的值count = 1tmp = nums[0]for i in range(1, len(nums)):if nums[i] == tmp:continue# 遍历到新的值时,更新指针tmp = nums[i]nums[count] = tmpcount += 1# 切分原数据,并返回结果nums = nums[:count]return count
删除有序数组中的重复项 II
针对上面的解答,略加改造
class Solution:def removeDuplicates(self, nums: List[int]) -> int:# 处理边界数据if not nums: return 0if len(nums) == 1: return 1# 三个指针,一个记录当前数组中应该有的值的个数,一个记录最新遍历到的值,一个记录重复次数count = 1tmp = nums[0]tmp_count = 1for i in range(1, len(nums)):if nums[i] == tmp:# 增加重复次数计数tmp_count += 1if tmp_count > 2:# 超过2次时,不记录在数组了continueelse:# 更新值和重复次数tmp = nums[i]tmp_count = 1# 更新数组的值,并更新值个数的指针nums[count] = tmpcount += 1# 切分原数据,并返回结果nums = nums[:count]return count