LeetCode精選TOP面試題26.刪除排序數組中的重複項

題目描述

給定一個排序數組,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在 原地 修改輸入數組 並在使用 O(1) 額外空間的條件下完成。

example1:
input  : [1,1,2] 
output : [1,2]
note   : 函數應該返回新的長度 2, 並且原數組 nums 的前兩個元素被修改爲 1, 2。 
example2:
input  : [0,0,1,1,1,2,2,3,3,4]
output : [0,1,2,3,4]
note   : 函數應該返回新的長度 5, 並且原數組 nums 的前五個元素被修改爲 0, 1, 2, 3, 4。

解題思路

思路
雙指針遍歷,一個指針i用於遍歷數組,另一個指針len用於修改數組。
當前元素的值num[i]與其前一個元素的值num[i-1]不相等的時候,num[len]的值更新爲num[i],以此實現對數組的修改。

代碼(Java)

class Solution {
    public int removeDuplicates(int[] nums) {
        int len = 1;
        for (int i = 1; i < nums.length; i++){ // 下標從1開始是爲了訪問i-1時防止出現溢出。
            if (nums[i] != nums[i-1]){
                nums[len ++] = nums[i];
            }
        }
        return len;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章