update a better solution
This commit is contained in:
		
							
								
								
									
										59
									
								
								80-231129/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								80-231129/main.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
#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;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user