【每日一题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最大单词长度乘积 | 哈希表 位运算
55 1
|
7月前
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
48 1
|
7月前
【每日一题Day159】LC1638统计只差一个字符的子串数目 | 枚举
【每日一题Day159】LC1638统计只差一个字符的子串数目 | 枚举
42 0
|
7月前
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
52 2
|
7月前
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
33 0
|
7月前
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
46 0
|
7月前
【每日一题Day142】LC1590使数组和能被 P 整除 | 前缀和+哈希表
【每日一题Day142】LC1590使数组和能被 P 整除 | 前缀和+哈希表
45 0
【每日一题Day71】LC2032至少在两个数组中出现的值 | 哈希表 + 位运算
思路:使用一个哈希表记录每个数字在三个数组中的出现情况,哈希表的key值为数值大小,value值为该数字在数组中的出现情况,从左到右第i位为1则表示该数字在第i个数组中出现过。最后根据value值将至少出现在两个数组中的num添加至结果集
78 0
【每日一题Day48】LC1805字符串中不同整数的数目 | 双指针+哈希表
思路:使用双指针定位字符串中整数的起始位置和结束位置,去除前导0后,将该整数放入哈希表中,最后返回哈希表的大小即可。
84 0
|
机器学习/深度学习
【每日一题Day74】LC2351第一个出现两次的字母 | 哈希表 位运算
思路:使用哈希表统计出现的字母及其次数,当某个字母出现次数为2时立即返回
61 0