LeetCode 2605. 从两个数字数组里生成最小数字 C#
原题链接
简单
作者:
hpstory
,
2023-04-03 10:06:44
,
所有人可见
,
阅读 136
C# 暴力代码
public class Solution {
public int MinNumber(int[] nums1, int[] nums2) {
int n = nums1.Length, m = nums2.Length;
List<int> result = new List<int>();
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
if (nums1[i] == nums2[j]) result.Add(nums1[i]);
else{
result.Add(nums1[i] * 10 + nums2[j]);
result.Add(nums2[j] * 10 + nums1[i]);
}
}
}
return result.Min();
}
}
C# 位运算代码
public class Solution {
public int MinNumber(int[] nums1, int[] nums2) {
int a = 0, b = 0;
foreach (int num in nums1) a |= 1 << num;
foreach (int num in nums2) b |= 1 << num;
int c = (a & b);
if (c != 0) return BitOperations.TrailingZeroCount(c);
int x = nums1.Min(), y = nums2.Min();
return Math.Min(x * 10 + y, y * 10 + x);
}
}