思路:排序后遍历即可
class Solution { public: int findMaxK(vector<int>& nums) { sort(nums.begin(),nums.end()); int i = 0, j = nums.size() - 1; int res = -1; while(i <= j && nums[i] < 0 && nums[j] > 0){ if(abs(nums[i]) == nums[j]) return nums[j]; else if(abs(nums[i]) < nums[j]) j--; else if(abs(nums[i]) > nums[j]) i++; } return res; } };
思路:用set去重的特性来储存,遍历一遍反转插入即可
class Solution { public: int countDistinctIntegers(vector<int>& nums) { set<int> res; for(auto k : nums) res.insert(k); for(int i = 0; i < nums.size(); i++){ int tmp = nums[i]; int k = -1; while(tmp){ k++; tmp /= 10; } tmp = 0; while(nums[i]){ tmp += nums[i] % 10 * pow(10,k); k--; nums[i] /= 10; } res.insert(tmp); } return res.size(); } };
第三题:6219. 反转之后的数字和
思路:暴力枚举即可
class Solution { public: int numberReverse(int x){ int tmp = x; int k = -1; while(tmp){ k++; tmp /= 10; } tmp = 0; while(x){ tmp += x % 10 * pow(10,k); k--; x /= 10; } return tmp; } bool sumOfNumberAndReverse(int num) { for(int i = 0; i <= num; i++){ if(i + numberReverse(i) == num) return true; } return false; } };