class Solution {
public:
vector<vector<int>> findSubsequences(vector<int>& nums) {
vector<vector<int>> res;
vector<int> sub;
if(nums.empty())
return res;
Dfs(0,nums,res,sub);
return res;
}
void Dfs(int start,vector<int>& nums,vector<vector<int>>& res,vector<int> sub){ //从start开头的所有结果存入res中
if(sub.size()>1){
res.push_back(sub);
}
unordered_set<int> hash; //
for(int i=start;i<nums.size();i++){
if((sub.empty()||nums[i]>=sub.back()) && hash.find(nums[i]) == hash.end()){ //!!!注意此处判断
sub.push_back(nums[i]);
Dfs(i+1,nums,res,sub);
sub.pop_back();
hash.insert(nums[i]);
}
}
}
};
491. Increasing Subsequences
最新推荐文章于 2018-12-12 15:54:44 发布