题目: 给定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
"""
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号开学
|