给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ,每个数组中的元素 互不相同 ,请你返回 最小 的数字,两个数组都 至少 包含这个数字的某个数位。
输入:nums1 = [4,1,3], nums2 = [5,7] 输出:15 解释:数字 15 的数位 1 在 nums1 中出现,数位 5 在 nums2 中出现。15 是我们能得到的最小数字。
输入:nums1 = [3,5,2,6], nums2 = [3,1,7] 输出:3 解释:数字 3 的数位 3 在两个数组中都出现了。
1 <= nums1.length, nums2.length <= 91 <= nums1[i], nums2[i] <= 9首先,建立一个哈希表,并且遍历nums1来更新哈希表。
其次,我们遍历nums2,如果两个容器存在相同的元素,那么返回最小的相同元素结果即可。
最后,如果不存在相同元素,那么对两个vector容器进行排序,找到两个容器的最小元素,并且构成最小的两位数即可。
- class Solution {
- public:
- int minNumber(vector<int>& nums1, vector<int>& nums2) {
- unordered_map<int,int> hash;
- for(auto &i : nums1)
- ++hash[i];
- int ans = 100;
- for(auto &i :nums2)
- if(hash.find(i) != hash.end())
- ans = min(ans,i);
- sort(nums1.begin(),nums1.end());
- sort(nums2.begin(),nums2.end());
- int tmp = nums1[0];
- ans = min(tmp * 10 + nums2[0],ans);
- tmp = nums2[0];
- ans = min(tmp * 10 + nums1[0],ans);
- return ans;
- }
- };