Вот моя проблема:Как проверить, соответствует ли сумма из 3 целых чисел в списке другому целому? (python)
У меня есть большое целое число (от 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 A in itemlist:
For B in itemlist:
For C in itemlist:
if A + B + C == X:
exit("Done")
Но поскольку мой список целых чисел содержит более 100 000 пунктов, это использует слишком много памяти, и было бы слишком долго.
Есть ли способ найти решение для A, B и C без использования безумного объема памяти или принятия безумного времени? Заранее спасибо.
Используйте ['itertools.combinations'] (https://docs.python.org/2/library/itertools.html#itertools.combinations) – inspectorG4dget
вы можете использовать' while index1
Вы можете попробовать сначала отсортировать списки и «перебить» ток для вложенного цикла, если «A + B> X» (во втором 'for') или' A + B + C> X' (в третьем). Поступая таким образом, вы можете сэкономить некоторые вычисления, это похоже на обратный алгоритм. Тем не менее, я не уверен, что он действительно будет работать лучше. – Delgan