[leetcode]491. Increasing Subsequences
Analysis
放假回家效率果然打折—— [每天刷题并不难0.0]
Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increasing subsequence should be at least 2 .
Explanation:
找出递增子串,用dfs解决~
Implement
class Solution {
public:
vector<vector<int>> findSubsequences(vector<int>& nums) {
vector<vector<int>> res;
vector<int> tmp;
dfs(res, tmp, nums, 0);
return res;
}
void dfs(vector<vector<int>>& res, vector<int>& tmp, vector<int>& nums, int pos){
if(tmp.size() >= 2)
res.push_back(tmp);
unordered_set<int> ms;
for(int i=pos; i<nums.size(); i++){
if((tmp.empty() || nums[i]>=tmp.back()) && ms.find(nums[i])==ms.end()){
tmp.push_back(nums[i]);
dfs(res, tmp, nums, i+1);
tmp.pop_back();
ms.insert(nums[i]);
}
}
}
};