26. 删除有序数组中的重复项 - 力扣(LeetCode)
方法一:双指针
题目的特点:升序数组;原地删除数组元素,保持元素之间的相对位置不变(因此不能使用集合的唯一性来解);返回唯一元素的长度
思路:使用一个指针fast循环比较数组相邻两个元素相等的情况,使用另一个指针slow存放新数组,最后返回新数组长度slow
注意:该题需要将获取的数组元素覆盖原始数组
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
n = len(nums)
slow = fast = 1
while fast < n:
if nums[fast] != nums[fast-1]:
nums[slow] = nums[fast]
slow += 1
fast += 1
return slow