LeetCode: Combination Sum II
2014-06-23 12:33
411 查看
思路:和前面一题一样,不过这次是要保证同一个元素不能重复选取,所以调用函数本身时要从当前位置的下一个开始pos+1,而且为了不超时,需要保证如果当前元素与下一个元素相同,则下一个元素不需要取代当前元素搜索了,因为如果A[pos+1]后面能够找到解,那么在A[pos]开始找的时候,就已经找到了,因为A[pos] == A[pos+1]。
code:
code:
class Solution { public: void solveSum(vector<int> &A, int pos, int target, vector<int> curRet, int curSum, vector<vector<int> > &ret){ if(curSum == target){ ret.push_back(curRet); return; } else if(curSum > target) return; for(int i = pos;i < A.size();i++){ vector<int> temp = curRet; temp.push_back(A[i]); solveSum(A,i+1,target,temp,curSum+A[i],ret); while(i<A.size()-1 && A[i] == A[i+1])i++; } } vector<vector<int> > combinationSum2(vector<int> &num, int target) { vector<vector<int> > ret; vector<int> curRet; sort(num.begin(),num.end()); solveSum(num,0,target,curRet,0,ret); return ret; } };
相关文章推荐
- 【leetcode】Combination Sum II
- leetcode第一刷_Combination Sum Combination Sum II
- [Leetcode] combination sum ii 组合之和
- 【LeetCode with Python】 Combination Sum II
- 【leetcode刷题笔记】Combination Sum II
- Leetcode:Combination Sum II
- Combination Sum II -- LeetCode
- [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 II
- leetcode-combination sum and combination sum II
- LeetCode--Combination Sum II
- LeetCode Online Judge 题目C# 练习 - Combination Sum II
- Leetcode 39 Combination Sum & 40 Combination Sum II & 216 Combination Sum III & 377 Combination V
- leetcode - Combination Sum II
- LeetCode - Combination Sum I && II
- ***(leetcode_backtracking) Combination Sum II
- Leetcode Combination Sum II