class Solution:
def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
candidates.sort()
result=[]
n = len(candidates)
def backtrack(i,tmp_sum,tmp_list):
# if i == n or tmp_sum > target: 这个部分由于回溯函数会用到j+1,所以并不合适,会导致无法判断最后一位
# return
if tmp_sum == target and tmp_list not in result:
result.append(tmp_list)
return
for j in range(i,n):
if tmp_sum + candidates[j] > target:
return
backtrack(j+1,tmp_sum+candidates[j],tmp_list+[candidates[j]]) #为了能够合理显示,下一次迭代用的是j+1
backtrack(0,0,[])
return result
leetcode刷题python之组合总和2
最新推荐文章于 2024-02-29 21:03:56 发布