На платформе Leetcode у меня возникла проблема под названием «Сумма комбинаций», где мне нужно найти все пары, которые суммируются с целевым значением, указанным в качестве входных данных для программы.
В предоставленном коде во время рекурсивного вызова, когда цель равна стоимости, список partialsol должен быть добавлен к глобальному результату списка. Но после каждого рекурсивного вызова, когда это условие выполняется, список результатов обновляется, а затем добавляется partialsol, и после завершения всех рекурсивных вызовов возвращаемый список результатов становится пустым.
class Solution(object):
result = []
def findpairs(self, partialsol, candidates, target, cost, start):
if(cost == target):
print(self.result)
print(partialsol)
self.result.append(partialsol)
print(self.result)
print('---------------')
return
else:
for i in range(start, len(candidates)):
c = candidates[i]
if((cost+c) > target):
continue
partialsol.append(c)
self.findpairs(partialsol, candidates, target, cost+c, i)
partialsol.pop()
return
def combinationSum(self, candidates, target):
partialsol = []
self.findpairs(partialsol, candidates, target, 0, 0)
return self.result
Ваш ввод
candidates: [2,3,6,7]
target: 7
stdout:
[]
[2, 2, 3]
[[2, 2, 3]]
[[7]] #here the result list is getting updated from [[2,2,3]] to [[7]] even before appending.
[7]
[[7], [7]] #here the partialsol is appended but lost the previous list [[2,2,3]] as it is updated to [[7]].
Output
[[],[]] #returned result as empty lists of list
Expected
[[2,2,3],[7]]