80. Remove Duplicates from Sorted Array II
数组最多允许重复两个数字,如果数组长度小于等于2,直接返回数组长度。
然后依然是指针法,从2开始遍历。i
作为一个试探指针,如果i
和k-2
中的数字不相等,那么ik会同时前进,一旦i
和k-2
中的数字相等,说明i
前面已经有两个相等的数字,k
就停在第三个数字上等待i
找到新的不同的数字。
public int removeDuplicates(int[] nums) {
if (nums.length <= 2) return nums.length;
int k = 2;
for (int i = 2; i < nums.length; i++) {
if (nums[i] != nums[k - 2]) {
nums[k] = nums[i];
k++;
}
}
return k;
}