• 【每日练习】从两个数字数组里生成最小数字


    📖题目描述

    给你两个只包含 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 在两个数组中都出现了。

    📖我的解答

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    📖官方解答

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    📖知识总结

    • 条件表达式:条件表达式的一般形式为result = value_if_true if condition else value_if_false ,在执行时会判断condition是否成立,如果成立则返回value_if_true否则返回value_if_false

    • 海象操作符:它的主要形式是 :=,它可以将一个表达式的值赋给一个变量,并返回被赋的值。例如下面的代码片段:

    	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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    【区块链 | 智能合约】Ethereum源代码(10)- 以太坊Downloader源码分析
    F5服务器负载均衡能力如何?一文了解
    【5.Vue 父子组件监听数据】
    基于划分的方法、K-均值算法、K-medoids、K-prototype(机器学习)
    【数据结构 二叉树 递归与非递归遍历】
    SpringBoot的约定优于配置,SpringBoot解决了哪些问题?
    Idea代码上传至Git完整教程(阿里云)
    城市公交查询系统android
    【架构视角】一篇文章带你彻底吃透Spring
    JavaScript高级知识-闭包
  • 原文地址:https://blog.csdn.net/weixin_44035098/article/details/132699391