def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
回溯法,层层递减,得到符合条件的路径就加入结果集中,超出则剪枝;
self._find_path(target, path, res, candidates, 0, size)
def _find_path(self, target, path, res, candidates, begin, size):
for i in range(begin, size):
left_num = target - candidates[i]
path.append(candidates[i])
# 为避免重复解,我们把比当前值小的参数也从下一次寻找中剔除,
self._find_path(left_num, path, res, candidates, i, size)