diff --git a/80-231129/main.cpp b/80-231129/main.cpp new file mode 100644 index 0000000..330d083 --- /dev/null +++ b/80-231129/main.cpp @@ -0,0 +1,59 @@ +#include +using namespace std; + +class Solution { +public: + int removeDuplicates(vector& 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& 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 ex1 = {1,1,1,2,2,3}; + // int k = sol.removeDuplicates(ex1); + int k = sol.better(ex1); + cout< ex2 = {0,0,1,1,1,1,2,3,3}; + // k = sol.removeDuplicates(ex2); + k = sol.better(ex2); + cout<