leetcode/80-231129-pass/main.cpp

59 lines
1.4 KiB
C++
Raw Normal View History

2023-11-29 10:29:05 +01:00
#include<bits/stdc++.h>
using namespace std;
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
const int number_limit = 2*1e4+10;
int numbers[number_limit] = {};
const int shift = 1e4;
for(int i = 0 ; i < nums.size() ; i++){
numbers[nums[i]+shift]++;
}
int sum = 0;
int cur = 0;
for(int i = 0 ; i < number_limit ;i++){
if(numbers[i]>=2){
nums[cur++] = i-shift;
nums[cur++] = i-shift;
sum += 2;
}else if(numbers[i] == 1){
nums[cur++] = i-shift;
sum += 1;
}
}
return sum;
}
int better(vector<int>& nums){
int i = 0 ;
for(int ele: nums){
if( i==0 || i==1 || nums[i-2]!=ele){
nums[i] = ele;
i++;
}
}
return i;
}
};
int main(){
Solution sol;
vector<int> ex1 = {1,1,1,2,2,3};
// int k = sol.removeDuplicates(ex1);
int k = sol.better(ex1);
cout<<k<<endl;
for(int i = 0 ; i < k ; i++){
cout<<ex1[i]<<' ';
}
cout<<endl;
vector<int> ex2 = {0,0,1,1,1,1,2,3,3};
// k = sol.removeDuplicates(ex2);
k = sol.better(ex2);
cout<<k<<endl;
for(int i = 0 ; i < k ; i++){
cout<<ex2[i]<<' ';
}
cout<<endl;
return 0;
}