前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python面试题-找到两个数组元素和小于等于目标值target的最大值的所有组合

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

作者头像
上海-悠悠
发布2022-05-30 15:11:52
1.3K0
发布2022-05-30 15:11:52
举报

题目:

给定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

代码参考

代码语言:javascript
复制
"""
作者:上海-悠悠
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]))

运行结果

2022年第 11 期《python接口web自动化+测试开发》课程,6月5号开学!

《JMeter 性能测试实战》课程6月15号开学

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档