LeetCode Combination Sum
来源:互联网 发布:刺客信条主角排名知乎 编辑:程序博客网 时间:2024/05/18 12:30
LeetCode解题之Combination Sum
原题
在一个集合(没有重复数字)中找到和为特定值的所有组合。
注意点:
- 所有数字都是正数
- 组合中的数字要按照从小到大的顺序
- 原集合中的数字可以出现重复多次
- 结果集中不能够有重复的组合
- 虽然是集合,但传入的参数类型是列表
例子:
输入: candidates = [2, 3, 6, 7], target = 7
输出: [[2, 2, 3], [7]]
解题思路
采用回溯法。由于组合中的数字要按序排列,我们先将集合中的数排序。依次把数字放入组合中,因为所有数都是正数,如果当前和已经超出目标值,则放弃;如果和为目标值,则加入结果集;如果和小于目标值,则继续增加元素。由于结果集中不允许出现重复的组合,所以增加元素时只增加当前元素及之后的元素。
AC源码
class Solution(object): def combinationSum(self, candidates, target): """ :type candidates: List[int] :type target: int :rtype: List[List[int]] """ if not candidates: return [] candidates.sort() result = [] self.combination(candidates, target, [], result) return result def combination(self, candidates, target, current, result): s = sum(current) if current else 0 if s > target: return elif s == target: result.append(current) return else: for i, v in enumerate(candidates): self.combination(candidates[i:], target, current + [v], result)if __name__ == "__main__": assert Solution().combinationSum([2, 3, 6, 7], 7) == [[2, 2, 3], [7]]
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
0 0
- [LeetCode] Combination Sum、Combination Sum II
- 【LeetCode】Combination Sum && Combination Sum II
- leetcode之Combination Sum && Combination Sum II
- leetcode Combination Sum &Combination Sum II
- leetcode-combination sum and combination sum II
- Leetcode:Combination Sum与Combination Sum II
- leetcode Combination Sum VS Combination Sum II
- [Leetcode]Combination Sum &&Combination Sum II
- LeetCode Combination Sum & Combination Sum II
- leetcode | Combination Sum & Combination Sum 2
- LeetCode: Combination Sum
- LeetCode: Combination Sum II
- LeetCode: Combination Sum
- LeetCode: Combination Sum II
- [LeetCode]Combination Sum
- [LeetCode]Combination Sum II
- LeetCode Combination Sum
- LeetCode Combination Sum II
- OpenCv工具——Image Watch
- Mac生成SSH Keys
- Linux常用经典命令
- 田蕴章书法讲座《每日一题,每日一字》(6) 文字整理 -- 书法用笔
- EXSI 5.5 虚拟机,使用*-flat.vmdk恢复的方法
- LeetCode Combination Sum
- mySQL 性能优化
- Android 控件——利用Dialog实现底部弹出对话框
- 一张酷图帮你集齐所有git命令
- 跨域请求之jQuery的ajax jsonp的使用
- 对Map排序
- iOS开发数据库篇—SQL语句
- 《Java编程思想》学习笔记14——I/O高级
- Struts2不用Struts标签显示表单校验提示信息