LeetCode Combination Sum II
2014-06-11 16:08
363 查看
题目
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in
C where the candidate numbers sums to T.
Each number in C may only be used once in the combination.
Note:
All numbers (including target) will be positive integers.
Elements in a combination (a1,
a2, … , ak) must be in non-descending order. (ie,
a1 ≤ a2 ≤ … ≤
ak).
The solution set must not contain duplicate combinations.
For example, given candidate set
A solution set is:
和上一题类似,只是元素不能重复取。
代码:
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in
C where the candidate numbers sums to T.
Each number in C may only be used once in the combination.
Note:
All numbers (including target) will be positive integers.
Elements in a combination (a1,
a2, … , ak) must be in non-descending order. (ie,
a1 ≤ a2 ≤ … ≤
ak).
The solution set must not contain duplicate combinations.
For example, given candidate set
10,1,2,7,6,1,5and target
8,
A solution set is:
[1, 7]
[1, 2, 5]
[2, 6]
[1, 1, 6]
和上一题类似,只是元素不能重复取。
代码:
class Solution { vector<vector<int>> ans; vector<int> temp; public: void combs2(vector<int> &cand,int target,int sum,int begin) //候选集合,目标,当前序列和,当前可以取的最小编号 { if(sum==target) //获得结果 { ans.push_back(temp); return; } for(int i=begin;i<cand.size();i++) //查找 { if(sum+cand[i]<=target) { temp.push_back(cand[i]); combs2(cand,target,sum+cand[i],i+1); temp.pop_back(); while(i+1<cand.size()&&cand[i]==cand[i+1]) //使要更改的位置可以取得不同的数,从而保证不出现重复解 i++; } else break; } } vector<vector<int> > combinationSum2(vector<int> &candidates, int target) { ans.clear(); temp.clear(); if(candidates.empty()) return ans; sort(candidates.begin(),candidates.end()); combs2(candidates,target,0,0); return ans; } };
相关文章推荐
- [LeetCode-Algorithms-40] "Combination Sum II" (2017.11.29-WEEK13)
- [LeetCode] Combination Sum II
- 【Leetcode】Combination Sum II
- LeetCode_OJ【40】Combination Sum II
- leetcode-combination sum and combination sum II
- Leetcode 39 Combination Sum & 40 Combination Sum II & 216 Combination Sum III & 377 Combination V
- leetcode第39题--Combination Sum II
- LeetCode Combination Sum II
- Leetcode--Combination Sum II
- [LeetCode] Combination Sum II
- LeetCode - Combination Sum I && II
- [leetcode刷题系列]Combination Sum II
- [leetcode] Combination Sum II
- 【Leetcode】Combination Sum II (Backtracking)
- leetcode Combination Sum II python
- 子集系列(二) 满足特定要求的子集,例 [LeetCode] Combination, Combination Sum I, II
- 【leetcode】Combination Sum II
- LeetCode-Combination Sum II
- [Leetcode] combination sum ii 组合之和
- LeetCode: Combination Sum II [039]