【每日一题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 )

目录
相关文章
|
5天前
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
25 1
|
5天前
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
31 1
|
5天前
【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表
【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表
21 0
|
5天前
【每日一题Day136】LC982按位与为零的三元组 | 哈希表
【每日一题Day136】LC982按位与为零的三元组 | 哈希表
19 0
|
5天前
|
存储
【每日一题Day158】LC2395和相等的子数组 | 哈希表
【每日一题Day158】LC2395和相等的子数组 | 哈希表
18 0
|
5天前
【每日一题Day142】LC1590使数组和能被 P 整除 | 前缀和+哈希表
【每日一题Day142】LC1590使数组和能被 P 整除 | 前缀和+哈希表
21 0
|
5天前
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
18 0
|
5天前
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
21 0
|
5天前
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
27 2
|
5天前
|
机器学习/深度学习
【每日一题Day128】LC2357使数组中所有元素都等于零 | 排序+模拟 哈希表
【每日一题Day128】LC2357使数组中所有元素都等于零 | 排序+模拟 哈希表
21 0