2605. 从两个数字数组里生成最小数字 - Kotlin 模拟 分类讨论

Smile_slime_47

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

思路

分类讨论,在不考虑最小值的情况下,可以分为两种情况:

  • 对于任意Misplaced &A\in nums1 & A\notin nums2,B\in nums2 & B\notin nums1,能够组成的最小值为
  • 对于任意Misplaced &A\in nums1 & A\in nums2,能够组成的最小值为它自己

自然地,我们寻找以上两种情况的最小值即为所求结果

对于第一种情况,我们应当寻找nums1nums2各自的最小值,并让两者中的较小值作为十位,较大者作为个位

对于第二种情况,我们应当寻找nums1nums2中共同出现过的最小值

复杂度

  • 时间复杂度:

  • 空间复杂度: ,主要是判断两个数组的重复元素时使用的集合

Code

1
2
3
4
5
6
class Solution 
fun Solution.minNumber(nums1: IntArray, nums2: IntArray): Int =
Math.min(
Math.min(nums1.min(), nums2.min()) * 10 + Math.max(nums1.min(), nums2.min()),
nums1.filter { nums2.toSet().contains(it) }.minOrNull() ?: Int.MAX_VALUE
)
Comments
On this page
2605. 从两个数字数组里生成最小数字 - Kotlin 模拟 分类讨论