反转之后不同整数的数目
题目
来源:力扣2442
给你一个由正整数组成的数组 nums 。
你必须取出数组中的每个整数,反转其中每个数位,并将反转后得到的数字添加到数组的末尾。这一操作只针对 nums 中原有的整数执行。
返回结果数组中 不同 整数的数目。
思路
关键思路在于“不同”,我们可以使用集合。建立无序集合us,首先插入nums元素,即做到nums的去重。之后逆转nums中元素插入us中。
为什么使用unorder_set
dokay尝试使用set,set的有序性会大幅拉长程序运行时间。
代码
class Solution {
public:
int reverse(int x) {
int ans = 0;
while(x) {
ans = 10*ans + (x % 10);
x /= 10;
}
return ans;
}
int countDistinctIntegers(vector<int>& nums) {
unordered_set<int> us = {nums.begin(), nums.end()};
for(int num: nums) us.insert(reverse(num));
return us.size();
}
};