LeetCode 26. Remove Duplicates from Sorted Array


給一個排序過的陣列,移除重複的值,每個元素只能留下一個。
不能使用其他的陣列空間,必需在本來的陣列中操作。
備註:直接修改輸入的陣列,空間複雜度應為O(1)
範例: [1,1,2] 去除重複的1之後,剩下[1,2],回傳陣列的長度2。
跟 LeetCode 283. Move Zeroes 很像,差別在於283移除的是0,這題移除的是重複的數字
時間複雜度:O(N)
空間複雜度O(1)

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int count = 1;
        for(int i=0;i<nums.size();i++){
            if(nums[count-1] != nums[i]){
                nums[count] = nums[i];
                count++;
            }
        }
        return count;
    }
};

移動不重複元素至陣列開頭
Step1.紀錄要改動的陣列位置 index
Step2.若當前元素跟前一個元素相比值不同,則代表這是出現的第一個元素
Step3.陣列開頭的第一個元素一定是新的元素

Ref:
https://cppsecrets.com/users/1559211698111109981081015450575064103109971051084699111109/C00-Program-to-Remove-Duplicates-from-Sorted-Array.php
https://clay-atlas.com/blog/2021/02/07/leetcode-cn-26-remove-duplicates-from-sorted-array-solution/
https://knightzone.studio/2018/10/21/3919/leetcode%EF%BC%9A26-remove-duplicates-from-sorted-array/
https://www.cnblogs.com/grandyang/p/4329128.html
https://hackmd.io/@Zero871015/SyVXfGv3E?type=view
https://ithelp.ithome.com.tw/articles/10213266

留言

這個網誌中的熱門文章

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header

經得起原始碼資安弱點掃描的程式設計習慣培養(三)_7.Cross Site Scripting(XSS)_Stored XSS_Reflected XSS All Clients

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題