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

keybot
0
2025-08-20

#easy

给你两个只包含 1 到 9 之间数字的数组 nums1nums2 ,每个数组中的元素 互不相同 ,请你返回 最小的数字,两个数组都 至少 包含这个数字的某个数位。

提示:

  • 1 <= nums1.length, nums2.length <= 9
  • 1 <= nums1[i], nums2[i] <= 9
  • 每个数组中,元素 互不相同
int minNumber(int* nums1, int nums1Size, int* nums2, int nums2Size) {
    // 设置桶,统计每个数组中的数
    int a[10] = {0};
    int b[10] = {0};
    for (int i = 0; i < nums1Size; i++) {
        a[nums1[i]]++;
    }
    for (int i = 0; i < nums2Size; i++) {
        b[nums2[i]]++;
    }
    // 判断是否有相同的数,若有相同的数直接返回便是最小
    for (int i = 0; i < 10; i++) {
        if (a[i] == 1 && a[i] == b[i])
            return i;
    }
    // 没有最小则取两个中的最小数,拼成一个最小的数
    int min1, min2;
    for (int i = 0; i < 10; i++) {
        if (a[i] == 1) {
            min1 = i;
            break;
        }
    }
    for (int i = 0; i < 10; i++) {
        if (b[i] == 1) {
            min2 = i;
            break;
        }
    }
    // 判断那个数为较小值作为十位
    if (min1 < min2) {
        return min1 * 10 + min2;
    } else {
        return min2 * 10 + min1;
    }
}