• python面试题找到两个数组元素和小于等于目标值target的最大值的所有组合 上海


    题目:

    给定2个数组(不是有序的),再给定一个目标值target,找到两个数组元素和小于等于目标值target的最大值的所有组合

    示例一:
    数组a 为[3, 8,5]
    数组b 为[2, 1,4]
    目标值10

    输出:(8,2) 因为 8+2<=10

    示例二

    数组a为 [5, 7, 2]
    数组b为[4, 2, 1]
    目标值10

    输出为(5, 4), (7,2)因为5+4=7+2<=10

    代码参考

    """
    作者:上海-悠悠
    python QQ交流群:730246532
    联系微信/QQ: 283340479
    """
    
    
    def target_function(a, b, target):
        target_map = []  # 收集结果,一个队列
        for i in a:
            for j in b:
                if i+j <= target:
                    if len(target_map) == 0:
                        # 如果队列为空,直接入栈
                        target_map.append((i, j))
                    else:
                        if i+j == sum(target_map[-1]):
                            # 如果新的元素相加跟收集结果里面值的相等,入栈
                            target_map.append((i, j))
                        if i + j > sum(target_map[-1]):
                            # 如果新的元素相加大于收集结果里面值的相等,清空替换
                            target_map = []
                            target_map.append((i, j))
                        if i + j < sum(target_map[-1]):
                            # 如果新的元素相加小于收集结果里面值的相等,不用管
                            pass
        # 最后看结果
        return target_map
    
    
    if __name__ == '__main__':
        result1 = target_function(
            a=[3, 8, 5], b=[2, 1, 4], target=10)
        print(','.join([str(i) for i in result1]))
        result2 = target_function(
            a=[5, 7, 2], b=[4, 2, 1], target=10)
        print(','.join([str(i) for i in result2]))
    

    运行结果

  • 相关阅读:
    selet 语句详解
    第三章 sql 的约束
    第二章 创建数据库并插入数据
    第一章
    微信小程序(九)
    微信小程序(七)
    微信小程序(八)
    微信小程序(六)
    bzoj4622 [NOI 2003] 智破连环阵
    bzoj3996 [TJOI2015]线性代数
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/16316379.html
Copyright © 2020-2023  润新知