LeetCode 40. Combination Sum II
来源:互联网 发布:双录取很坑人 知乎 编辑:程序博客网 时间:2024/06/05 07:23
题意
给定一个可能有重复元素的序列,找出取出的数之和为
思路
和上一题差不多,这次里面元素的个数受到了限制,所以可以统计每个数出现的次数,然后对序列进行排序去重,然后用和上一题一样的方法来求,只是中间取出元素的个数不能超过它的个数.
代码
class Solution {public: map<int, int>mp; vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(), candidates.end()); size_t len = candidates.size(); for(int i = 0; i < len; i++){ mp[candidates[i]]++; } int n = unique(candidates.begin(), candidates.end()) - candidates.begin(); vector<int>temp; for(int i = 0; i < n; i++){ temp.push_back(candidates[i]); } vector<int>now; vector<vector<int> >ans; findAns(temp, ans, now, 0, target); return ans; }private: void findAns(vector<int>& temp, vector<vector<int> >& ans, vector<int>& now, int id, int target){ if(target == 0){ ans.push_back(now); return ; } if(id >= temp.size()) return ; for(int i = 0; i <= mp[temp[id]] && i * temp[id] <= target; i++){ for(int j = 0; j < i; j++){ now.push_back(temp[id]); } findAns(temp, ans, now, id + 1, target - i * temp[id]); for(int j = 0; j < i; j++){ now.pop_back(); } } }};
阅读全文
0 0
- [LeetCode]40.Combination Sum II
- LeetCode --- 40. Combination Sum II
- LeetCode 40.Combination Sum II
- [Leetcode] 40. Combination Sum II
- LeetCode 40. Combination Sum II
- [leetcode] 40. Combination Sum II
- 40. Combination Sum II LeetCode
- leetcode 40. Combination Sum II
- Leetcode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- leetcode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- LeetCode *** 40. Combination Sum II
- 【LeetCode】40. Combination Sum II
- leetcode 40. Combination Sum II
- LeetCode - 40. Combination Sum II
- [LeetCode] 40. Combination Sum II
- 598. Range Addition II
- Maven学习(一)
- linux多线程
- ROS-笔记
- 呼吸灯 串口 SGM3146
- LeetCode 40. Combination Sum II
- 正则表达式
- 如何进行CRC校验
- 341. Flatten Nested List Iterator
- 对象标识符和对象引用+对象标识符+对象引用+为对象引用插入数据+查询对象引用OID对应的实际值+更新对象引用+删除对象引用
- BIEE 11g 使用叙述视图实现复杂中国式表格一例
- USACO-Section1.2 dualpal[字符处理]
- IOS基础控件 UIImageView swift3.1
- Pascal中repeat的用法