Remove Duplicates from Sorted Array II leetcode java

1257 ワード

タイトル:
 
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] .
 
問題:
以前は繰り返しは許されませんでした.
同じ要素を最大2つまで許可できるようになりました.
次にduplicateを削除し、長さを返します.
duplicateを削除する方法はポインタの操作です.具体的な方法はコードを参照してください.
 
コードは次のとおりです.
 1     
public 
int removeDuplicates(
int[] A) {
 2         
if (A.length <= 2)
 3             
return A.length;
 4  
 5         
int prev = 1; 
//
 point to previous
 6 
        
int curr = 2; 
//
 point to current
 7 
 
 8         
while (curr < A.length) {
 9             
if (A[curr] == A[prev] && A[curr] == A[prev - 1]) {
10                 curr++;
11             } 
else {
12                 prev++;
13                 A[prev] = A[curr];
14                 curr++;
15             }
16         }
17  
18         
return prev + 1;
19     }
 Reference:http://www.programcreek.com/2013/01/leetcode-remove-duplicates-from-sorted-array-ii-java/