第一题
解题思路:
使用集合set<>的count()函数统计元素在集合中出现的次数
class Solution
{
public:
int findMaxK(vector<int>& nums)
{
int n=nums.size();
set<int> se;
for(int i=0;i<n;i++) se.insert(nums[i]);
sort(nums.begin(),nums.end());
for(int i=n-1;i>=0;i--)
if(nums[i]>0 && se.count(nums[i])>0 && se.count(-nums[i])>0)
return nums[i];
return -1;
}
};
第二题
解题思路:
函数to_string()将整数转成字符串;
函数reverse()将字符串翻转;
函数stoi()将字符串转成整数;
使用集合set<>统计结果数组中不同整数的数目
class Solution
{
public:
int countDistinctIntegers(vector<int>& nums)
{
int n=nums.size();
for(int i=0;i<n;i++)
{
string s=to_string(nums[i]);
reverse(s.begin(),s.end());
nums.push_back(stoi(s));
}
set<int> se;
for(auto &n:nums) se.insert(n);
return se.size();
}
};
第三题
解题思路:
数据较小,暴力求解
函数to_string()将整数转成字符串;
函数reverse()将字符串翻转;
函数stoi()将字符串转成整数
class Solution
{
public:
bool sumOfNumberAndReverse(int num)
{
for(int k=0;k<=num;k++)
{
string s=to_string(k);
reverse(s.begin(),s.end());
int reverse_k=stoi(s);
if(k+reverse_k == num)
return true;
}
return false;
}
};