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 =
Your function should return length =
問題:
以前は繰り返しは許されませんでした.
同じ要素を最大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/
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/