【力扣每日一题】<1> 从两个数字数组里生成最小数字

力扣每日一题

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


题目描述

在这里插入图片描述

题目链接和做题时间

题目链接: 力扣2023年9月5日 每日一题 从两个数字数组里生成最小数字

一、解题思路

1>分为两个数组有相同元素和不同元素两种情况;
2>有相同元素,直接输出相同元素即可;
3>没有相同元素,则从两个数组中分别取出各自的最小值,然后组成一个二位数的整数则为答案;

二、代码实现

代码如下:

class Solution {
public:
    int minNumber(vector<int>& nums1, vector<int>& nums2) {
        // 定义两个桶,判断两个数组具有 1~9哪些数
        int a[10] = {0}, b[10] = {0}, ans;
        for (int i = 0; i < nums1.size(); i ++)
            a[nums1[i]] ++;

        for (int i = 0; i < nums2.size(); i ++)
            b[nums2[i]] ++;

		// 判断两个数组是否有相同值
        bool flag = false;
        for (int i = 1; i <= 9; i ++)
            if (a[i] && b[i])
            {
                ans = i;
                flag = true;
                break;
            }
        
        if (flag)
            return ans;
        else 
        {
        	// 从两个数组中找出各自的最小值
            int k1, k2;
            for (int i = 1; i <= 9; i ++)
                if (a[i])
                {
                    k1 = i;
                    break;
                }
            for (int i = 1; i <= 9; i ++)
                if (b[i])
                {
                    k2 = i;
                    break;
                }
            if (k1 <= k2)
                ans = k1 * 10 + k2;
            else 
                ans = k2 * 10 + k1;
            return ans;
        }
    }
};

总结

总共提交了两次,自己第一次错误原因没有考虑到两个数组谁前谁后的情况。

你可能感兴趣的:(力扣刷题,算法,力扣)