数组——双指针:26.删除排序数组中的重复项
题目链接
26.删除排序数组中的重复项
题目重构
原地移除有序数组中的重复元素,使得每个元素只出现一次,并返回去重后的数组长度。
思路
选择双指针
。快指针fast
遍历整个数组,慢指针slow
指向下一个不重复元素应该放置的位置(也表示去重后有效部分的长度)。当fast
遇到与上一个元素不重复的元素,与slow
交换位置并更新slow
指针。因为nums[0]
不需要检查,所以两个指针都从1开始。
代码
int n = numms.size();
if (n == 0) {return;
}
int fast = 1, slow = 1;
while (fast < n) {if (nums[fast] != nums[fast - 1]) {nums[slow] = nums[fast];slow++;}fast++;
}
return slow;