⓹➄ Remove Duplicates from Sorted Array II

Top Interview 150, leetcode medium, C++, Algorithm

Today’s code

承上題進階

來源

Solution

這裡多設計了一個twice_count計數器,用於紀錄元素是否有超過兩個一樣的,若有超過則計數器 i 就持續增加,去遍歷整個vector。

然後,當我們檢查到元素不連續時,記得將twice_count重新設定為1,去檢查這個新的元素是否有超過兩個。

class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int ans_index = 0;
int twice_count = 1;
for(int i = 0; i < nums.size() - 1; i++){
if(nums[ans_index] != nums[i + 1]){
twice_count = 1;
ans_index++;
nums[ans_index] = nums[i + 1];
}else if(twice_count < 2){
twice_count++;
ans_index++;
nums[ans_index] = nums[i + 1];
}
}
// 因為ans_index是紀錄index所以元素總數還要再加1
return ans_index + 1;
}
};

--

--