leetcode -- Combination Sum II -- 重点
来源:互联网 发布:苹果手机淘宝怎样登录 编辑:程序博客网 时间:2024/05/21 10:23
https://leetcode.com/problems/combination-sum-ii/
与Combination Sum一样,只是每个元素只能用一次。子节点集合不包括本身就行。
还是要排序,排序的原因要知道:1,方便剪枝,2. 题目要求 combination要从小到大
class Solution(object): def dfs(self, candidates, start, end, target, subres, res): #print subres if sum(subres) == target: if subres not in res: res.append(subres[:]) return else: i = start while i < end: if sum(subres) + candidates[i] <= target: self.dfs(candidates, i + 1, end, target, subres + [candidates[i]], res) else:# 因为排序过,只要碰到有子节点加上之后大于target,那么就不需要继续搜后续的子节点了。因为都比这个子节点大 return i += 1 def combinationSum2(self, candidates, target): """ :type candidates: List[int] :type target: int :rtype: List[List[int]] """ res = [] self.dfs(sorted(candidates), 0, len(candidates), target, [], res) return res
自己重写code
class Solution(object): def dfs(self, candidates, start, end, target, subres, res): cur_sum = sum(subres) if cur_sum == target and subres not in res: res.append(subres) for i in xrange(start, end): if cur_sum + candidates[i] <= target:#这里要有等于号 self.dfs(candidates, i+1, end, target, subres + [candidates[i]], res) def combinationSum2(self, candidates, target): """ :type candidates: List[int] :type target: int :rtype: List[List[int]] """ candidates.sort() res = [] self.dfs(candidates, 0, len(candidates), target, [], res) return res
0 0
- leetcode -- Combination Sum II -- 重点
- leetcode -- Combination Sum -- 重点
- LeetCode: Combination Sum II
- LeetCode: Combination Sum II
- [LeetCode]Combination Sum II
- LeetCode Combination Sum II
- [Leetcode] Combination Sum II
- [LeetCode] Combination Sum II
- LeetCode Combination Sum II
- [Leetcode] Combination Sum II
- LeetCode: Combination Sum II
- leetcode Combination Sum II
- [LeetCode]Combination Sum II
- [leetcode] Combination Sum II
- LeetCode-Combination Sum II
- LeetCode - Combination Sum II
- LeetCode:Combination Sum II
- 【Leetcode】Combination Sum II
- jsp页面上date转换成string与string转换成date类型
- 快速排序
- swift-商品加入购物车动画
- TextView的一些小技巧
- linux基础(十六)----linux编程基础----linux条件控制语句----多层嵌套控制结构
- leetcode -- Combination Sum II -- 重点
- 数据库死锁的检查
- 将Eclipse代码导入到AndroidStudio的两种方式
- HDU 2546 —— 饭卡 01背包入门
- c2w
- SQL优化大全
- 负载均衡的基本算法
- Cordova系列之二Android Plugin
- UML类图符合