【每日一题Day317】LC2605从两个数字数组里生成最小数字 | 哈希表

简介: 【每日一题Day317】LC2605从两个数字数组里生成最小数字 | 哈希表

从两个数字数组里生成最小数字【LC2605】

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

思路

如果数组 nums1 和 nums2 有相同的数字,那么返回最小的相同数字

如果数组 nums1 和 nums2 没有相同的数字,那么返回右两个数组中最小的数字组成的最小二位数

实现

使用两个哈希表分别统计两个数组中出现的数字,边遍历边记录数组中最小的数字

统计nums2时判断nums1中是否有相同的数字出现

class Solution {
    public int minNumber(int[] nums1, int[] nums2) {
        boolean[] vis1 = new boolean[10];
        boolean[] vis2 = new boolean[10];
        int same = 10;
        int a = 10, b = 10;
        for (int num : nums1){
            a = Math.min(a, num);
            vis1[num] = true;
        }
        for (int num : nums2){
            if (vis1[num]){
                same = Math.min(same, num);
            }
            b = Math.min(b, num);
            vis2[num] = true;
        }
        if (same != 10){
            return same;
        }
        if (a < b){
            return a * 10 + b;
        }
        return b * 10 + a;
    }
}

复杂度

时间复杂度:O ( n + m )

空间复杂度:O ( C )

目录
相关文章
|
6月前
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
45 1
|
6月前
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
53 1
|
6月前
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
50 0
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
|
6月前
【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表
【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表
30 0
|
6月前
【每日一题Day136】LC982按位与为零的三元组 | 哈希表
【每日一题Day136】LC982按位与为零的三元组 | 哈希表
62 0
|
6月前
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
48 2
|
6月前
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
30 0
|
6月前
【每日一题Day142】LC1590使数组和能被 P 整除 | 前缀和+哈希表
【每日一题Day142】LC1590使数组和能被 P 整除 | 前缀和+哈希表
41 0
|
6月前
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
43 0
|
6月前
【每日一题Day234】LC1171从链表中删去总和值为零的连续节点 | 链表模拟 哈希表+前缀和
【每日一题Day234】LC1171从链表中删去总和值为零的连续节点 | 链表模拟 哈希表+前缀和
40 0