leetcode_39. 组合总和
2020-09-09 12:12
134 查看
目录
一、题目内容
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。
说明:
所有数字(包括 target)都是正整数。
解集不能包含重复的组合。
示例 1:
输入:candidates = [2,3,6,7], target = 7,
所求解集为:
[
[7],
[2,2,3]
]
示例 2:
输入:candidates = [2,3,5], target = 8,
所求解集为:
[
[2,2,2,2],
[2,3,3],
[3,5]
]
提示:
1 <= candidates.length <= 30
1 <= candidates <= 200
candidate 中的每个元素都是独一无二的。
1 <= target <= 500
二、解题思路
1.回溯+DFS。
2.注意当所加数之和大于target则返回,等于target则记录。
三、代码
[code]import copy class Solution: def combinationSum(self, candidates: list, target: int) -> list: n = len(candidates) ans = [] res = [] def dfs(index, n, su, ans): if su == target: if res not in ans: ans.append(res.copy()) # print(ans) if su > target: return for i in range(index, n): su += candidates[i] res.append(candidates[i]) dfs(i, n, su, ans) su -= candidates[i] res.remove(candidates[i]) dfs(0, n, 0, ans) return ans if __name__ == '__main__': candidates = [2, 3, 6, 7] target = 7 s = Solution() ans = s.combinationSum(candidates, target) print(ans)悲恋花丶无心之人 CSDN认证博客专家 [i] TensorFlow 深度学习 神经网络 计算机视觉在读研究生,熟悉Pytorch,MXNet,TensorFlow,Keras等深度学习框架,主要涉及的领域有目标检测,语义分割,超分辨率重建,行人重识别等。
相关文章推荐
- 【leetcode】39. 组合总和(java实现)
- LeetCode刷题笔记 39. 组合总和
- LeetCode 39. 组合总和 c++
- LeetCode刷题笔记 39. 组合总和
- Leetcode做题日记:39. 组合总和(PYTHON)
- leetcode39. 组合总和、40. 组合总和 II(c++)
- Leetcode:39. 组合总和
- Leetcode 39. 组合总和
- LeetCode-Python-39. 组合总和
- 【Leetcode】39. 组合总和
- LeetCode 39. 组合总和(Combination Sum)
- Leetcode 216. 组合总和 III C++
- JavaScript|LeetCode|搜索|216. 组合总和Ⅲ
- LeetCode-Python-216. 组合总和 III
- [LeetCode] 39.组合总和
- JavaScript|LeetCode|搜索|40.组合总和Ⅱ
- JavaScript|LeetCode|搜索|39.组合总和
- LeetCode-39-组合总和
- [LeetCode]40.组合总和II
- leetCode 40.Combination Sum II(组合总和II) 解题思路和方法