classSolution{public:
vector<int>numberOfPairs(vector<int>& nums){
set<int> s;
vector<int> ans;for(int num : nums){if(!s.count(num)){
s.emplace(num);}else{
s.erase(num);}}int first =(nums.size()- s.size())/2;int second = s.size();
ans.push_back(first);
ans.push_back(second);return ans;}};
6164. 数位和相等数对的最大和
首刷自解
classSolution{public:intmaximumSum(vector<int>& nums){
map<int, vector<int>> m;for(int num : nums){int n =0;int nu = num;while(nu !=0){
n += nu %10;
nu /=10;}
m[n].push_back(num);}int ans =-1;for(auto it = m.begin(); it != m.end(); it++){if(it->second.size()<2)continue;sort(it->second.begin(), it->second.end());
ans =max(ans, it->second.back()+ it->second[it->second.size()-2]);}return ans;}};
6121. 裁剪数字后查询第 K 小的数字
首刷自解
classSolution{public:
vector<int>smallestTrimmedNumbers(vector<string>& nums, vector<vector<int>>& queries){int n = nums[0].size();
vector<vector<pair<string,int>>>helper(n);
vector<int> ans;for(vector<int> query : queries){int start = n - query[1];if(!helper[start].empty()){
ans.push_back(helper[start][query[0]-1].second);continue;}for(int i =0; i < nums.size(); i++){
helper[start].push_back(make_pair(nums[i].substr(start), i));}sort(helper[start].begin(), helper[start].end());
ans.push_back(helper[start][query[0]-1].second);}return ans;}};
6122. 使数组可以被整除的最少删除次数
首刷自解
classSolution{public:intminOperations(vector<int>& nums, vector<int>& numsDivide){
map<int,int> _map;sort(nums.begin(), nums.end());for(int num : nums) _map[num]++;int count =0;int n = nums.size();int i =0;// auto iter = _map.begin();int ans =0;while(i < n){bool flag =true;for(int numDivide : numsDivide){if(numDivide % nums[i]==0)continue;else{
flag =false;break;}}if(flag){break;}else{
ans += _map[nums[i]];
i += _map[nums[i]];}}return ans == n ?-1: ans;}};