Python获取一个列表中的对的和,该值大于一个值,并且在多个对中没有使用索引

2024-04-27 02:19:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决一个问题,它要求我在一个列表中找到对的总和。成对索引必须是唯一的,即没有一个索引应该是多对的。 例如-

my_list = [1,1,2,3,4,5]
sum_greater_than_or_equal_to = 5

在这里,我有一个排序列表,并希望找到所有对的总和大于或等于5。所以, 我可以在O(n^2)中通过另一个循环来找到配对来解决这个问题。在多对中不使用索引的对是-

output = [(1,4),(1,5),(2,3)]

有没有其他更有效的方法? 不必创建两个循环?你知道吗

编辑-人们提到的答案包含值-[(2,4),(2,5),(3,4),(3,5),(4,5)],但我希望如果列表的索引已成对使用,则不能再次使用。你知道吗


Tags: orto方法答案编辑列表output排序
1条回答
网友
1楼 · 发布于 2024-04-27 02:19:15

以下代码将生成这类对的一个可能组合:

my_list = [1,1,2,3,4,5]

def find_pairs(arr, limit):
    arr = sorted(arr)
    res = []

    start = 0
    end = len(arr) - 1

    while start < end:
        if arr[start] + arr[end] >= limit:
            res.append((arr[start], arr[end]))
            end -= 1
        start += 1

    return res

print find_pairs(my_list, 5) # [(1, 5), (1, 4), (2, 3)]

对于给定的测试集,解[(3,4), (2,5)]也是有效的答案。你知道吗

相关问题 更多 >