1. 程式人生 > 其它 >26 刪除有序陣列中的重複項

26 刪除有序陣列中的重複項

26 刪除有序陣列中的重複項

思路,快慢指標

題目明確是升序排列的。
快指標遍歷,慢指標代表當前值; 遇到不相等元素時,如果i和j相差超過2說明中間肯定有重複的元素,慢指標自增1然後更新陣列元素。

如果沒有超過2說明沒有重複,單純讓慢指標自增1,不更新陣列。

#include <iostream>
#include <vector>

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

    }
};

int main() {
    vector<int> a ={1,2};
    Solution s = Solution();
    int ret = s.removeDuplicates(a);
    for (int i = 0; i < a.size(); i++) {
        cout << a[i] <<endl;

    }
    cout << ret <<endl;
    return 0;
}

本文來自部落格園,作者:yyyz,轉載請註明原文連結:https://www.cnblogs.com/yyyzyyyz/p/15589062.html