#easy
给你两个只包含 1 到 9 之间数字的数组
nums1
和nums2
,每个数组中的元素 互不相同 ,请你返回 最小的数字,两个数组都 至少 包含这个数字的某个数位。提示:
1 <= nums1.length, nums2.length <= 9
1 <= nums1[i], nums2[i] <= 9
- 每个数组中,元素 互不相同 。
int minNumber(int* nums1, int nums1Size, int* nums2, int nums2Size) {
// 设置桶,统计每个数组中的数
int a[10] = {0};
int b[10] = {0};
for (int i = 0; i < nums1Size; i++) {
a[nums1[i]]++;
}
for (int i = 0; i < nums2Size; i++) {
b[nums2[i]]++;
}
// 判断是否有相同的数,若有相同的数直接返回便是最小
for (int i = 0; i < 10; i++) {
if (a[i] == 1 && a[i] == b[i])
return i;
}
// 没有最小则取两个中的最小数,拼成一个最小的数
int min1, min2;
for (int i = 0; i < 10; i++) {
if (a[i] == 1) {
min1 = i;
break;
}
}
for (int i = 0; i < 10; i++) {
if (b[i] == 1) {
min2 = i;
break;
}
}
// 判断那个数为较小值作为十位
if (min1 < min2) {
return min1 * 10 + min2;
} else {
return min2 * 10 + min1;
}
}