class Solution {
public:
    /**
     * @param S: A set of numbers.
     * @return: A list of lists. All valid subsets.
     */

    vector<vector<int> > subsets (vector<int> &nums) {
        vector<vector<int> > results;
        if (nums.size() == 0) {
            results.push_back(vector<int>());
            return results;
        }
        sort(nums.begin(), nums.end());
        vector<int> current;
        dsfHelper(nums, 0, current, results);
        return results;
    }
    void dsfHelper(vector<int> &nums, int index, vector<int> & current, vector<vector<int>> &results) {
        results.push_back(current);
        for (int i = index; i < nums.size(); i++) {
            current.push_back(nums[i]);
            dsfHelper(nums, i+1, current, results);
            current.pop_back();
        }
    }
};

results matching ""

    No results matching ""