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) 如果不存在,则各自找出分别在两个数组中最小的那个数字,两者中的小者放在十位,两者中的大者放在个位,返回结果即可。