题目
题解
方法:双指针法
跟第26题类似,26题也是类似这种"往前覆盖重复的数字"的思想。
代码
public class code80 {
// public static int removeDuplicates(int[] nums) {
// if (nums.length == 0) {
// return 0;
// }
// int i = 0;
// int count = 1;
// for (int j = 1; j < nums.length; j++) {
// if (nums[j] != nums[i]) {
// i++;
// nums[i] = nums[j];
// count = 1;
// } else if (count >= 2) {
// continue;
// } else {
// i++;
// nums[i] = nums[j];
// count++;
// }
// }
// return i + 1;
// }
public static int removeDuplicates(int[] nums) {
if (nums.length <= 2) {
return nums.length;
}
int index = 2;
for (int i = 2; i < nums.length; i++) {
if (nums[i] != nums[index - 2]) {
nums[index] = nums[i];
index++;
}
}
return index;
}
public static void main(String[] args) {
int nums[] = { 0, 0, 1, 1, 1, 1, 2, 3, 3 };
int len = removeDuplicates(nums);
for (int i = 0; i < len; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
}
}