leetcode-26. 刪除排序數組中的重複項(C++)

寫在前面

  • 簡單題
  • 碼代碼日常問題筆記,關鍵詞:記
    • 下標臨界值細節處理,0 / 1 開頭問題

題目詳情

  • 26.刪除排序數組中的重複項
給定一個排序數組,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。

不要使用額外的數組空間,你必須在 原地 修改輸入數組 並在使用 O(1) 額外空間的條件下完成。

說明:
爲什麼返回數值是整數,但輸出的答案是數組呢?
請注意,輸入數組是以「引用」方式傳遞的,這意味着在函數裏修改輸入數組對於調用者是可見的。
  • 注意
    • 有序數組!!! 單調不減
    • inx 記錄不重複數字個數 / 下標
    • 如果 nums[i] != nums[i - 1] ,出現新的不重複值,nums[inx++] = nums[i];

ac代碼

  • 個人版
class Solution
{
public:
    int removeDuplicates(vector<int>& nums)
    {
        int n = nums.size();
        if(n==0)
            return 0;

        int inx = 1;
        for(int i =1; i<n; i++)
        {
            if(nums[i]!=nums[i-1])
                nums[inx++] = nums[i];
        }
        return inx;
    }
};
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n = nums.size();
        if (n == 0) {
            return 0;
        }
        int index = 0;
        // nums[0]不變,index從1開始賦值。
        for (auto i = 1; i < n; ++ i) {
            if (nums[i] != nums[i - 1]) {
                index ++;
                nums[index] = nums[i];
            }
        }
        return index + 1;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章