leetcode: Combination Sum
2013-11-04 18:11
295 查看
http://oj.leetcode.com/problems/combination-sum/
思路:
显然是递归,注意两点:
数字可以重复使用。
结果里面不能有重复,比如[2, 2, 4, 5]的情况,第1个2用过以后循环直接跳到4。
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]
思路:
显然是递归,注意两点:
数字可以重复使用。
结果里面不能有重复,比如[2, 2, 4, 5]的情况,第1个2用过以后循环直接跳到4。
class Solution { public: void internalCombinationSum(vector<int> &candidates, int start, int sum, int target, vector<int> &combination, vector<vector<int> > &result) { int size = candidates.size(); if (sum == target) { result.push_back(combination); return; } else if ((start >= size) || (sum > target)) { return; } for (int i = start; i < size; ) { int v = candidates[i]; combination.push_back(v); internalCombinationSum(candidates, i, sum + v, target, combination, result); combination.pop_back(); int j = i + 1; while (j < size) { if (candidates[i] == candidates[j]) { ++j; } else { break; } } i = j; } } vector<vector<int> > combinationSum(vector<int> &candidates, int target) { vector<vector<int> > result; vector<int> combination; sort(candidates.begin(), candidates.end()); internalCombinationSum(candidates, 0, 0, target, combination, result); return result; } };
相关文章推荐
- Leetcode: Combination Sum
- Leetcode:Combination Sum与Combination Sum II
- [leetcode刷题系列]Combination Sum
- leetcode 刷题之路 23 Combination Sum
- Leetcode 39 Combination Sum
- [LeetCode] Combination Sum (复习merge sort)
- LeetCode-Combination Sum
- [Leetcode] Combination Sum
- leetcode Combination Sum
- LeetCode 039 Combination Sum
- leetcode【39+40+216+377 Combination Sum 相关】【python】
- Leetcode 39 Combination Sum
- 【LeetCode练习题】Combination Sum
- [LeetCode] 017: Combination Sum
- Leetcode NO.39 Combination Sum
- LeetCode | Combination Sum
- [LeetCode] Combination Sum
- [LeetCode] Combination Sum 组合之和
- [LeetCode] Combination Sum
- [LeetCode]题解(python):039-Combination Sum