題目:
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
For example,
Given input array A = [1,1,2]
,
Your function should return length = 2
, and A is now [1,2]
.
題解:
題目關鍵字:數組,已排好序的,只能in place替換,不能用額外數組,並且要求結果返回unique的長度。
題解方法是雙指針,一個指針只記錄unique的並且幫助記錄長度,一個指針往前找。
代碼如下:
1
public
int removeDuplicates(
int[] A) {
2 if(A.length == 0 || A == null)
3 return 0;
4
5 int len = 1;
6 for( int index = 1; index < A.length; index++){
7 if(A[index] != A[index-1]){
8 if(A[index] != A[len])
9 A[len] = A[index];
10 len++;
11 }
12 }
13 return len;
14 }
2 if(A.length == 0 || A == null)
3 return 0;
4
5 int len = 1;
6 for( int index = 1; index < A.length; index++){
7 if(A[index] != A[index-1]){
8 if(A[index] != A[len])
9 A[len] = A[index];
10 len++;
11 }
12 }
13 return len;
14 }