python面试题-找到两个数组元素和小于等于目标值target的最大值的所有组合
Posted 上海-悠悠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]))
运行结果
以上是关于python面试题-找到两个数组元素和小于等于目标值target的最大值的所有组合的主要内容,如果未能解决你的问题,请参考以下文章
面试题:在数组里查找这样的数,它大于(等于)左侧所有数,小于(等于)右侧所有数
面试题:在数组里查找这样的数,它大于(等于)左侧所有数,小于(等于)右侧所有数
面试题:在数组里查找这样的数,它大于(等于)左侧所有数,小于(等于)右侧所有数