📖题目描述
给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ,每个数组中的元素 互不相同 ,请你返回最小的数字,两个数组都至少包含这个数字的某个数位。
📖示例
示例 1:
输入:nums1 = [4,1,3], nums2 = [5,7]
输出:15
解释:数字 15 的数位 1 在 nums1 中出现,数位 5 在 nums2 中出现。15 是我们能得到的最小数字。
示例 2:输入:nums1 = [3,5,2,6], nums2 = [3,1,7]
输出:3
解释:数字 3 的数位 3 在两个数组中都出现了。
📖我的解答
python
class Solution:
def minNumber(self, nums1: List[int], nums2: List[int]) -> int:
# 定义一个总数组
num_sum = []
# 迭代两个数组,组合成两位整数
for i in nums1:
for j in nums2:
num_sum.append(i*10+j)
num_sum.append(j*10+i)
# 添加单个位数的数组
for i in nums1:
if i in nums2:
num_sum.append(i)
# 添加单个位数的数组
for i in nums2:
if i in nums1:
num_sum.append(i)
# 找到总数组中最小的值
min_num = float(inf)
for i in num_sum:
if i < min_num:
min_num = i
return min_num
📖官方解答
python
class Solution:
def minNumber(self, nums1: List[int], nums2: List[int]) -> int:
# 直接使用集合判断两个数组的重合情况
def same() -> int:
s = set(nums1) & set(nums2)
# 返回的时候使用了条件表达式
return min(s) if s else -1
# 使用了海象操作符直接对赋值进行判断
if (x := same()) != -1:
return x
else:
x = min(nums1)
y = min(nums2)
return min(x*10+y, y*10+x)
📖知识总结
-
条件表达式:条件表达式的一般形式为
result = value_if_true if condition else value_if_false
,在执行时会判断condition
是否成立,如果成立则返回value_if_true
否则返回value_if_false
。 -
海象操作符:它的主要形式是
:=
,它可以将一个表达式的值赋给一个变量,并返回被赋的值。例如下面的代码片段:
python
if (result := some_function()) == expected_value:
print("Result is as expected:", result)
# 等同于下面的形式
result = some_function()
if result == expected_value:
print("Result is as expected:", result)