1. 程式人生 > >【leetcode】26. Remove Duplicates from Sorted Array

【leetcode】26. Remove Duplicates from Sorted Array

pty 時間 ++ clas problem num move 指針 條件

題目說明

給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

解法1

時間復雜度:O(n)
空間復雜度:O(1)
思路:利用數組為有序數組這一條件。使用雙指針,第一指針,用於指向非重復元素最後一個位置,第二個指針用於遍歷數組,當遍歷到的數組元素與非重復元素的最後一個不等時(因為是有序數組,之前的必不重復),說明是新的非重復元素,添加到非重復元素之後。

int removeDuplicates(vector<int>& nums)
{
    if (nums.empty())
        return 0;
    int j = 0;
    for (int i = 1; i < nums.size(); i ++)
    {
        if (nums[i] != nums[j])
            nums[++j] = nums[i];
    }
    return j + 1;
}

【leetcode】26. Remove Duplicates from Sorted Array