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