考察点:dfs;
思路:dfs,对于dfs函数,其中对每一个位置的数都选择选或者不选来判断。最后,用set,将set转化为vector的函数是copy(iter1, iter2, back_inserter(v1));
C++代码:
class Solution {
public:
vector<vector<int>> findSubsequences(vector<int>& nums) {
vector<vector<int>> res;
if (nums.empty())
return res;
set<vector<int>> ret;
vector<int> temp={0};
for (int i=0; i<nums.size()-1; i++) {
temp[0] = nums[i];
dfs(nums, ret, i+1, temp, temp[0]);
}
copy(ret.begin(), ret.end(), back_inserter(res));
return res;
}
void dfs(vector<int> &nums, set<vector<int>> &ret, int start, vector<int> temp, int former) {
if (start == nums.size())
return ;
dfs(nums, ret, start+1, temp, former);
if (nums[start] >= former) {
former = nums[start];
temp.push_back(nums[start]);
ret.insert(temp);
}
dfs(nums, ret, start+1, temp, former);
}
};