您需要找到列表中所有能给出目标值的金额组合。
列表长度nums
- 最多 30 个元素。该列表可以包含从 1 到 9,999,999 的数字。目标值target
可以是 1 至 9,999,999。
为了解决这个问题,必须删除重复项。对列表进行排序只需进行一次,不会浪费资源。
def find_combination_2(nums: list, target):
result = []
nums = list(set(nums)) # Убираем дубликаты
nums.sort() # Сортируем список
for r in range(1, len(nums) + 1):
print(r)
for combo in combinations(nums, r):
current_sum = sum(combo)
if current_sum == target:
result.append(list(combo))
elif current_sum > target:
print(current_sum)
break # Выходим из цикла, если сумма превышает целевое значение
return result
不使用多线程如何加速函数?