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

目录
相关文章
|
7月前
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
61 1
|
7月前
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
48 1
|
7月前
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
53 2
|
7月前
leetcode-373:查找和最小的 K 对数字
leetcode-373:查找和最小的 K 对数字
47 0
|
7月前
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
47 0
|
7月前
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
33 0
|
7月前
【每日一题Day142】LC1590使数组和能被 P 整除 | 前缀和+哈希表
【每日一题Day142】LC1590使数组和能被 P 整除 | 前缀和+哈希表
46 0
|
7月前
|
存储
【每日一题Day352】LC1726同积元组 | 哈希表+排列组合
【每日一题Day352】LC1726同积元组 | 哈希表+排列组合
38 0
|
7月前
【每日一题Day152】LC1012至少有1位重复的数字 | 数位dp
【每日一题Day152】LC1012至少有1位重复的数字 | 数位dp
59 0