80. 删除有序数组中的重复项 II

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution {
public int removeDuplicates(int[] nums) {
int n = nums.length;
if(n < 3){
return n;
}
int last = nums[nums.length - 1];
int i = 0;
for(i = 2; i < n; i++){
if(nums[i] < nums[i-1]){
break;
}
if(nums[i-1] == nums[i] && nums[i] == nums[i- 2]){
move(nums, i);
if(nums[nums.length - 1] == last){
break;
}
i--;
}
}
return i;
}

// 移动数组
public void move(int[] nums, int idx){
int tmp = nums[idx];
for(int i = idx + 1; i < nums.length; i++){
nums[i - 1] = nums[i];
}
nums[nums.length - 1] = tmp;
}
}