题目链接:26. 删除排序数组中的重复项
概述
题目给定一个排序数组,需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
思路
使用双指针p1
、p2
,其中p1
是慢指针、p2
是快指针。
如果nums[p1] === nums[p2]
,我们就增加p2
跳过重复项
如果nums[p1] !== nums[p2]
,说明已经跳过了所有重复项,所以我们需要把nums[p2]
的值复制到nums[p1 + 1]
中,并把p1
往后移动。
直到p2 === nums.length
时,算法结束。
因为p1
指向的是不重复项的最后一个,因此,最终的数组长度就是p1 + 1
。
实现
1 | /** |