LintCode題解|阿里巴巴高頻題:刪除排序數組中的重複數字

阿里巴巴高頻題:刪除排序數組中的重複數字

題目描述

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

不要使用額外的數組空間,必須在不使用額外空間的條件下原地完成。bash

樣例

樣例 1:
輸入: [] 輸出: 0ui

樣例 2:
輸入: [1,1,2] 輸出: 2 解釋: 數字只出現一次的數組爲: [1,2]spa

題目解析

因爲有序,因此相同的數字排在一塊兒。code

用一個遊標變量指向已經去重的部分的下一個空位,只要a[i] != a[i-1]a[i]!=a[i−1],就將a[i]填入以前的空位。cdn

遍歷一次數組,將不重複元素保留,重複元素被覆蓋,最後刪除末尾剩餘的元素便可。blog

參考代碼

public class Solution {
    public int removeDuplicates(int[] A) {
        if (A == null || A.length == 0) {
            return 0;
        }
        
        int size = 0;
        for (int i = 0; i < A.length; i++) {
            if (A[i] != A[size]) {
                A[++size] = A[i];
            }
        }
        return size + 1;
    }
}複製代碼

點擊LintCode進行在線評測排序

相關文章
相關標籤/搜索