26 刪除有序陣列中的重複項
阿新 • • 發佈:2021-11-22
思路,快慢指標
題目明確是升序排列的。
快指標遍歷,慢指標代表當前值; 遇到不相等元素時,如果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