1 题目
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
2 解析
使用快慢指针。慢指针来指向有序不重复序列的最后一个位置,fast来遍历整个集合。一旦慢指针的元素与快指针的不一致时,将快指针的元素插入到满指针的后一个位置,慢指针往后移动一个位置。
3 Python 实现
class Solution: def removeDuplicates(self, nums: List[int]) -> int: if not nums: return 0 n = len(nums) fast = slow = 1 while fast < n: if nums[fast] != nums[fast - 1]: nums[slow] = nums[fast] slow += 1 fast += 1 return slow