Friday, August 1, 2014

[LeetCode] Remove Duplicates from Sorted Array2

Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
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].

 解题思路:
与1类似有一个movesteps来记录i位置需要往前移动几位,另外加一个变量来统计每个不同元素的个数。

Java Code:

 public int removeDuplicates(int[] A) {
       int moveSteps = 0;
       int count = 1;
       
       for(int i = 1; i < A.length; i++){
           if(A[i] == A[i-1]){
               count++;
           }else{
                if(count > 2) moveSteps += count - 2;
               
                count = 1;
           }
           
           if(count <= 2){
                A[i-moveSteps] = A[i];
           }
       }
       
       if(count > 2) moveSteps += count - 2;
       
       return A.length - moveSteps;
    }

No comments:

Post a Comment