题目链接
思路:
题目要求每个数最多出现两次,并且数组已排序
那么,我们得出,如果需要每个数字只出现两次,只需要每一个数跟它前面两个位置处的数不相等即可,若相等,则需要跳过这个数,若不相等,则需要进行保留
public int removeDuplicates(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int len = nums.length;
// 如果数组本身长度小于等于2,则直接返回即可
if (len <= 2) {
return len;
}
// 直接从位置2处往后替换即可
int i = 2;
for (int j = 2; j < len; j++) {
// 若当前该数不等于前两个位置的数,则需要保留此数
if (nums[j] != nums[i - 2]) {
nums[i++] = nums[j];
}
}
return i;
}