容易 刪除排序陣列中的重複數字
阿新 • • 發佈:2019-01-26
2014-02-27 05:12 4789人閱讀 評論(5) 收藏 舉報
leetcodejava面試連結串列資料結構
容易 刪除排序陣列中的重複數字
32% 通過給定一個排序陣列,在原陣列中刪除重複出現的數字,使得每個元素只出現一次,並且返回新的陣列的長度。
不要使用額外的陣列空間,必須在原地沒有額外空間的條件下完成。
您在真實的面試中是否遇到過這個題? Yes 樣例給出陣列A =[1,1,2],你的函式應該返回長度2,此時A=[1,2]。
這道題跟Remove Element類似,也是考察陣列的基本操作,屬於面試中比較簡單的題目。做法是維護兩個指標,一個保留當前有效元素的長度,一個從前往後掃,然後跳過那些重複的元素。因為陣列是有序的,所以重複元素一定相鄰,不需要額外記錄。時間複雜度是O(n),空間複雜度O(1)。程式碼如下:
- publicint removeDuplicates(int[] A) {
- if(A == null || A.length==0)
- return0;
- int index = 1;
- for(int i=1;i<A.length;i++)
- {
- if(A[i]!=A[i-1])
- {
- A[index]=A[i];
- index++;
- }
- }
- return index;
- }