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