Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
What if duplicates are allowed at most twice?
For example,
Given sorted array A =
Given sorted array A =
[1,1,1,2,2,3]
,
Your function should return length =
5
, and A is now [1,1,2,2,3]
.Solution:
public class Solution { public int removeDuplicates(int[] A) { int count = 0; int value = Integer.MIN_VALUE; int i = 0; int len = A.length; while (i<len) { if (A[i]==value) count++; else { count = 1; value = A[i]; } if(count>2) moveToEnd(A,i,--len); else i++; } return len; } private void moveToEnd(int[]A, int pos1, int end) { for(int i= pos1; i<end; i++) swap(A, i, i+1); } private void swap (int[] A, int pos1, int pos2) { int temp = A[pos1]; A[pos1] = A[pos2]; A[pos2] = temp; } }
No comments :
Post a Comment