2023-09-05每日一题
一、题目编号
2605. 从两个数字数组里生成最小数字
二、题目链接
点击跳转到题目位置
三、题目描述
给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ,每个数组中的元素 互不相同 ,请你返回 最小 的数字,两个数组都 至少 包含这个数字的某个数位。
示例 1:
示例 2:
提示:
- 1 <= nums1.length, nums2.length <= 9
- 1 <= nums1[i], nums2[i] <= 9
- 每个数组中,元素 互不相同 。
四、解题代码
class Solution {public:int minNumber(vector<int>& nums1, vector<int>& nums2) {int hash1[10];memset(hash1, 0, sizeof(hash1));int min_num1 = INT_MAX;int min_num2 = INT_MAX;for(int i = 0; i < nums1.size(); ++i){min_num1 = min(min_num1, nums1[i]);hash1[nums1[i]]++;}for(int i = 0; i < nums2.size(); ++i){min_num2 = min(min_num2, nums2[i]);hash1[nums2[i]]++;}for(int i = 0; i <= 9; ++i){if(hash1[i] == 2){return i;}}if(min_num1 > min_num2){return min_num2 * 10 + min_num1;} return min_num1 * 10 + min_num2; }
};
五、解题思路
(1) 因为每个数组中的数字不同,所以利用哈希表来统计是否两个数组中存在相同的数字,如果存在多个相同的数字,就返回最小的那个,否则就返回那个唯一的相同的数字。
(2) 如果不存在,则各自找出分别在两个数组中最小的那个数字,两者中的小者放在十位,两者中的大者放在个位,返回结果即可。