題目:
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 }