第一题
思路:先用哈希表存储各个元素的数量,然后遍历元素获得数量,剩余总元素数量。
class Solution {
public:
vector<int> numberOfPairs(vector<int>& nums) {
int dui=0;
int sheng=nums.size();
vector<int>res(2);
unordered_map<int,int>m;
for(int&c:nums){
m[c]++;
}
for(int&c:nums){
int n=m[c]/2;
dui+=n;
sheng-=n*2;
m[c]=m[c]-n*2;
}
res[0]=dui;
res[1]=sheng;
return res;
}
};
思路:
第二题:
思路:哈希表记录,数组中出现过最大数,遍历过程中,判断该数位和是否已经存在,
class Solution {
public:
int maximumSum(vector<int>& nums) {
int n = nums.size();
unordered_map<int,int>m;
int res=-1;
for(int i=0;i<n;i++) {
int x=nums[i];
int a=0;
while(x>0){
a+=x%10;
x/=10;
}
if(m.count(a))
{
res=max(res,nums[i]+m[a]);
}
m[a]=max(nums[i],m[a]);
}
return res;
}
};
·