2605. 从两个数字数组里生成最小数字

发布时间 2023-04-09 01:08:59作者: lxy_cn

题目链接:2605. 从两个数字数组里生成最小数字

方法:哈希

解题思路

本题有两种情况:

  • 两个数组有共同元素,则取其中最小值返回;
  • 两个数组没有共同元素,则取两个数组中各自的最小元素组成最小的两位数返回。

代码

class Solution {
public:
    int minNumber(vector<int>& nums1, vector<int>& nums2) {
        int min1 = 10, min2 = 10, cur = 10;
        vector<int> cnt(10);
        for (auto &num : nums1) {
            cnt[num] ++ ;
            if (cnt[num] == 2) cur = min(cur, num);
            min1 = min(min1, num);
        }
        for (auto &num : nums2) {
            cnt[num] ++ ;
            if (cnt[num] == 2) cur = min(cur, num);
            min2 = min(min2, num);
        }
        if (cur != 10) return cur; // 有共同元素
        return min(10 * min1 + min2, 10 * min2 + min1); // 没有共同元素
    }
};

复杂度分析

时间复杂度:\(O(1)\)
空间复杂度:\(O(1)\)