ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

1.3 面试经典150题 - 删除有序数组中的重复项

2026/8/13 11:06:06 拓冰建站 浏览量
1.3 面试经典150题 - 删除有序数组中的重复项

删除有序数组中的重复项

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