Combination Sum II

来源:互联网 发布:java aes解密 编辑:程序博客网 时间:2024/06/10 11:38

昨天刚做了Permutations II,今天碰到相同的迭代格式就不会了,囧

主要还是一个dfs

class Solution {public:void dfs(vector<int> num, int start, int target, vector<int> array, vector<vector<int> > &result) {if (target == 0) {result.push_back(array);return;}if (start >= num.size() || num[0]>target) {return;}int i = start;while (i<num.size()) {if (num[i] <= target) {array.push_back(num[i]);dfs(num, i + 1, target - num[i], array, result);array.pop_back();//跳过重复的元素                                  //在这之前写过一个非常暴力的dfs,有vector去重的过程,测试超时了,跳过重复的元素这一步确实省了特别多的时间while (i<(num.size() - 1) && num[i] == num[i + 1]) {i++;}}i++;}}vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {vector<vector<int>> result;vector<int> array ;if (candidates.size() == 0) {result.push_back(array);return result;}sort(candidates.begin(), candidates.end());dfs(candidates, 0, target, array, result);return result;}};




0 0