2023-09-05 LeetCode每日一题(从两个数字数组里生成最小数字)

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

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)