leetcode - Combination Sum II
2013-03-26 19:44
501 查看
题目描述:点击此处
class Solution { public: int * cts; void getResult(vector<vector<int>> & rlt, vector<int> current, vector<int>* tags, int target){ if (target <= 0) return; int maxN = 1000000000; if (!current.empty()) maxN = *(current.end()-1); vector<int>::iterator vi; for (vi = tags[target].begin(); vi!=tags[target].end() && *vi<=maxN; vi++){ if (!current.empty()){ int ct = 1; vector<int>::iterator cti = current.end()-1; while (cti+1!=current.begin() && *cti==*vi){ ct++; cti--; } if (ct>cts[*vi]) continue; } vector<int> tvi = current; tvi.push_back(*vi); if (target-*vi==0){ vector<int> rr; vector<int>::iterator ii; for (ii=tvi.end()-1; ii+1 != tvi.begin(); ii--){ rr.push_back(*ii); } rlt.push_back(rr); } else getResult(rlt, tvi, tags, target-*vi); } } vector<vector<int> > combinationSum2(vector<int> &num, int target){ // Start typing your C/C++ solution below // DO NOT write int main() function sort (num.begin(), num.end()); vector<int>::iterator vi; vector<int> * tags = new vector<int>[target+1](); cts = new int[target+1]; for (int i=0; i<=target; i++) cts[i]=0; tags[0].push_back(0); for (vi=num.begin(); vi!=num.end(); vi++){ if (*vi<=target) cts[*vi]++; else break; for (int i=target; i>=*vi; i--){ if (!tags[i-*vi].empty() && find(tags[i].begin(), tags[i].end(),*vi)==tags[i].end()) tags[i].push_back(*vi); } } vector<vector<int>> rlt; vector<int> current; getResult(rlt, current, tags, target); delete[]cts; delete []tags; return rlt; } };
相关文章推荐
- LeetCode 40 Combination Sum II
- [leetCode] Combination Sum II
- leetcode---combination-sum-ii---dfs
- LeetCode(40) Combination Sum II
- leetcode第一刷_Combination Sum Combination Sum II
- [LeetCode] Combination Sum II, Solution
- Leetcode之combination-sum-ii
- LeetCode – Refresh – Combination Sum II
- LeetCode 42: Combination Sum II
- [LeetCode] Combination Sum II
- [LeetCode] Combination Sum II
- leetcode -- Combination Sum II -- 重点
- leetcode || 40、Combination Sum II
- LeetCode刷题【Array】 Combination Sum II
- [LeetCode]题解(python):040-Combination Sum II
- LeetCode_Combination Sum II
- LeetCode | Combination Sum II
- 【Leetcode】Combination Sum II
- Combination Sum II - LeetCode
- Combination Sum I/II - Leetcode