1. 程式人生 > >容易 刪除排序陣列中的重複數字

容易 刪除排序陣列中的重複數字

2014-02-27 05:12 4789人閱讀 評論(5) 收藏 舉報 leetcodejava面試連結串列資料結構

容易 刪除排序陣列中的重複數字

32% 通過

給定一個排序陣列,在原陣列中刪除重複出現的數字,使得每個元素只出現一次,並且返回新的陣列的長度。

不要使用額外的陣列空間,必須在原地沒有額外空間的條件下完成。

您在真實的面試中是否遇到過這個題?  Yes 樣例

給出陣列A =[1,1,2],你的函式應該返回長度2,此時A=[1,2]

標籤  兩根指標 陣列

這道題跟Remove Element類似,也是考察陣列的基本操作,屬於面試中比較簡單的題目。做法是維護兩個指標,一個保留當前有效元素的長度,一個從前往後掃,然後跳過那些重複的元素。因為陣列是有序的,所以重複元素一定相鄰,不需要額外記錄。時間複雜度是O(n),空間複雜度O(1)。程式碼如下:

  1. publicint removeDuplicates(int[] A) {  
  2.     if(A == null || A.length==0)  
  3.         return0;  
  4.     int index = 1;  
  5.     for(int i=1;i<A.length;i++)  
  6.     {  
  7.         if(A[i]!=A[i-1])  
  8.         {  
  9.             A[index]=A[i];  
  10.             index++;  
  11.         }  
  12.     }  
  13.     return index;  
  14. }