这是我的问题:
我有一个大整数(介于0和2 ^ 32-1之间)。让我们称这个数字为X。我还有一个整数列表,目前未排序。它们都是唯一的数字,大于0且小于X。假设此列表中有大量项目,例如超过100,000个项目。
我需要在此列表中找到最多3个数字(称为A、B和C),使它们相加等于X。 A、B和C都需要在列表内,并且它们可以重复(例如,如果X为4,则可以有A = 1,B = 1和C = 2,即使1只出现一次在列表中)。
A、B和C可能存在多个解决方案,但我只需要找到一种可能的解决方案,以最快的方式找到。
我尝试创建了一个for循环结构,如下所示:
我有一个大整数(介于0和2 ^ 32-1之间)。让我们称这个数字为X。我还有一个整数列表,目前未排序。它们都是唯一的数字,大于0且小于X。假设此列表中有大量项目,例如超过100,000个项目。
我需要在此列表中找到最多3个数字(称为A、B和C),使它们相加等于X。 A、B和C都需要在列表内,并且它们可以重复(例如,如果X为4,则可以有A = 1,B = 1和C = 2,即使1只出现一次在列表中)。
A、B和C可能存在多个解决方案,但我只需要找到一种可能的解决方案,以最快的方式找到。
我尝试创建了一个for循环结构,如下所示:
For A in itemlist:
For B in itemlist:
For C in itemlist:
if A + B + C == X:
exit("Done")
但是,由于我的整数列表包含超过10万个项目,这将使用太多的内存并且需要太长时间。
有没有办法在不使用过多内存或花费过长时间的情况下找到A、B和C的解决方案?提前致谢。
itertools.combinations
。 - inspectorG4dgetitertools.combinations
,正如@inspectorG4dget所推荐的那样。 - RobertB