中国做w7的网站,用友加密狗注册网站,深圳网站建设公司企业,爱站数据官网文章目录 题目描述题解思路题解代码 题目描述 题解思路
按升序排序candidates#xff0c;然后遍历candidates#xff0c;目标数减去当前candidates的数#xff0c;若该结果小于0#xff0c;因为candidates的元素大于0#xff0c;所以后续不会再出现让计算结果等于0的情况… 文章目录 题目描述题解思路题解代码 题目描述 题解思路
按升序排序candidates然后遍历candidates目标数减去当前candidates的数若该结果小于0因为candidates的元素大于0所以后续不会再出现让计算结果等于0的情况所以直接break如果该结果等于0将数据加到结果集合中然后break若该结果大于0则将当前candidates的数加入tmp数组递归调用调用结束后删去tmp中添加的当前candidates的数然后去掉和当前candidates的数重复的数
题解代码
func combinationSum2(candidates []int, target int) [][]int {sort.Ints(candidates)res : make([][]int, 0)var dfs func([]int, int)tmp : []int{}dfs func(candidates []int, target int) {n : len(candidates)for i : 0; i n; i {temp : target - candidates[i]if temp 0 {break}if temp 0 {res append(res, append([]int{}, append(tmp, candidates[i])...))break}tmp append(tmp, candidates[i])dfs(candidates[i1:], temp)tmp tmp[:len(tmp)-1]for i n - 1 candidates[i] candidates[i1] {i}}}dfs(candidates, target)return res
}