491. Increasing Subsequences
Input: [4, 6, 7, 7]
Output: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]void helper(vector<vector<int> >& res, vector<int>& cur, vector<int>& nums, int start) {
if (cur.size() >= 2) {
res.push_back(cur);
}
unordered_set<int> st;
for (int i = start; i < nums.size(); ++i) {
if (st.count(nums[i])) continue;
if (cur.empty() || cur.back() <= nums[i]) {
st.insert(nums[i]);
cur.push_back(nums[i]);
helper(res, cur, nums, i + 1);
cur.pop_back();
}
}
}
vector<vector<int>> findSubsequences(vector<int>& nums) { // time: O(n!); space: O(n)
vector<vector<int> > res;
vector<int> cur;
helper(res, cur, nums, 0);
return res;
}Last updated