使用回溯模板进行搜索。
class Solution {
public:
vector<vector<int>> res;
vector<vector<int>> findSubsequences(vector<int>& nums) {
vector<int> path;
dfs(0,nums,path);
return res;
}
void dfs(int index, vector<int>& nums,vector<int> path){
if(path.size()>=2) res.push_back(path);
unordered_set<int> hashset;
for(int i=index;i<nums.size();i++){
if(hashset.count(nums[i])) continue;
if(path.empty()||nums[i]>=path.back()) {
path.push_back(nums[i]);
hashset.insert(nums[i]);
dfs(i+1,nums,path);
path.pop_back();
}
}
}
};