Combination Sum II

来源:互联网 发布:java语言程序设计 编辑:程序博客网 时间:2024/06/07 06:57

用set过滤掉重复的答案即可,一种偷懒的办法。

class Solution {public:    vector<vector<int> > combinationSum2(vector<int> &num, int target) {        sort(num.begin(), num.end());        vector<int> path;        set<vector<int>> res;        helper(num, 0, 0, target, res, path);        set<vector<int>>::iterator it;        vector<vector<int>> ret;        for (it = res.begin(); it != res.end(); ++it)            ret.push_back(*it);        return ret;    }    void helper(vector<int> &num, int start, int sum, int target, set<vector<int>> &res, vector<int> &path) {        if (sum == target) {            res.insert(path);            return;        }        if (sum > target || start >= num.size())            return;        for (int i = start; i < num.size(); ++i) {            path.push_back(num[i]);            helper(num, i + 1, sum + num[i], target, res, path);            path.pop_back();        }    }};

http://oj.leetcode.com/problems/combination-sum-ii/

0 0
原创粉丝点击