gpt4 book ai didi

python - 优化大集合的交集

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:34 26 4
gpt4 key购买 nike

前提很简单:我有两个整数,ab 我想找到 i s.t. a + ib + i 都在给定列表中。列表 rs 非常大(10e9 项)。我有以下代码:

def getlist(a,b):
a1 = set([i - a for i in rs if i>a])
b1 = set([i-b for i in rs if i>b])

tomp = list(a1.intersection(b1))
return tomp

手头的问题是 a1 和 b1 首先被预先计算,这会产生内存问题。我能以某种方式优化我的代码吗?也欢迎对该方法提出一般性意见。

示例输入:

rs = [4,9,16]
a = 3
b = 8

预期输出:

getlist(3,8) = [1]

最佳答案

您可以通过跳过第二组(和中间列表)的创建来优化内存使用:

def getlist(a, b):
a1 = {i - a for i in rs if i > a}
return [i - b for i in rs if i > b and i - b in a1]

这个解决方案的时间和空间复杂度是O(n)

关于python - 优化大集合的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54555457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com