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