[LeetCode]039-Combination Sum
2015-12-29 14:18
537 查看
题目:
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.
The same repeated number may be chosen from C unlimited number of times.
Note:
For example, given candidate set 2,3,6,7 and target 7,
A solution set is:
[7]
[2, 2, 3]
Solution:
思路,先按照由小到大排序,然后依次选值,假设第i个:candidates[i],选完后target减去candidates[i],递归下,继续遍历从i往后的值。直到找到与target一样的值为止。
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.
The same repeated number may be chosen from C unlimited number of times.
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 2,3,6,7 and target 7,
A solution set is:
[7]
[2, 2, 3]
Solution:
思路,先按照由小到大排序,然后依次选值,假设第i个:candidates[i],选完后target减去candidates[i],递归下,继续遍历从i往后的值。直到找到与target一样的值为止。
class Solution { public: vector<vector<int>> combinationSum(vector<int>& candidates, int target) { sort(candidates.begin(),candidates.end()); vector<vector<int>> results; vector<int> result; combine(candidates,target,0,results,result); return results; } void combine(vector<int>& candidates, int target,int begin,vector<vector<int>>& results,vector<int>& result) { int n = candidates.size(); int i = 0; for(i = begin;i<n;i++) { if(candidates[i] == target) { result.push_back(candidates[i]); results.push_back(result); if(!result.empty()) { result.pop_back(); } return; } else if(candidates[i] < target) { int t = target - candidates[i]; result.push_back(candidates[i]); combine(candidates,t,i,results,result); if(!result.empty()) result.pop_back(); } else { return; } } } };
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解