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;
}