Follow up for 」Remove Duplicates」: What if duplicates are allowed at most twice? For example, Given sorted array A = [1,1,1,2,2,3], Your function should return length = 5, and A is now [1,1,2,2,3]ios
/* * 對一個已經有序的序列進行重複元素刪除 * 即保證序列相同元素最多出現兩次 */ class Solution1 { public: int removeDuplicatesFromSortedArray(vector<int>& nums) { //當序列爲空時 if(nums.size() <= 2) return nums.size(); //當序列非空時 int index = 2; for(int i = 2;i<nums.size();i++) { if(nums[i] != nums[index-2]) { nums[index] = nums[i]; index++; } } return index; } };
#include<iostream> #include<vector> using namespace std; /* * 對一個已經有序的序列進行重複元素刪除 * 即保證序列相同元素最多出現兩次 */ class Solution1 { public: int removeDuplicatesFromSortedArray(vector<int>& nums) { //當序列爲空時 if(nums.size() <= 2) return nums.size(); //當序列非空時 int index = 2; for(int i = 2;i<nums.size();i++) { if(nums[i] != nums[index-2]) { nums[index] = nums[i]; index++; } } return index; } }; //主函數 int main(void) { vector<int> a; a.push_back(1); a.push_back(1); a.push_back(1); a.push_back(2); a.push_back(2); a.push_back(3); a.push_back(4); a.push_back(4); a.push_back(4); a.push_back(4); a.push_back(5); int index = a.size(); //在刪除重複元素以前 cout<<"before:"<<endl; for(int i = 0;i<index;i++) { cout<<a[i]<<" "; } cout<<endl; //刪除重複元素以後 Solution1 s; int return_num = s.removeDuplicatesFromSortedArray(a); cout<<"after:"<<endl; for(int i = 0;i<return_num;i++) { cout<<a[i]<<" "; } cout<<endl; return 0; }