解题思路
考虑到数组是有序的,故重复的元素一定是相邻的
使用双指针,慢指针指向当前遍历得到的不重复元素应该处于的位置,快指针遍历寻找下一个不重复元素

Java代码
class Solution {
public int removeDuplicates(int[] nums) {
int n = nums.length;
if (n < 2) return n;
int p = 0, q = 1;
while (q < n) {
if (nums[p] != nums[q]) {
nums[++p] = nums[q];
}
q++;
}
return ++p;
}
}

本文介绍了一种高效算法来删除排序数组中的重复项。利用双指针技巧,通过一个慢指针记录不重复元素的位置,一个快指针用于遍历整个数组。此方法仅需一次遍历即可完成重复项的移除。

被折叠的 条评论
为什么被折叠?



