Subset

set<vector<int>> s;

void getSubset(const vector<int> &A, int current, vector<int> &output) {
    if(current == A.size()) {
        s.insert(output);
        return;
    }
    
    getSubset(A, current + 1, output);
    output.push_back(A[current]);
    getSubset(A, current + 1, output);
    output.pop_back();
}

vector<vector<int> > Solution::subsets(vector<int> &A) {
    s.clear();
    sort(A.begin(), A.end());
    vector<int> output;
    getSubset(A, 0, output);
    vector<vector<int>> res(s.begin(), s.end());
    return res;
}

Last updated