DFS算法+set存储独特的解。
class Solution {public: void func(int startIndex,vector<int>& temp,set<vector<int>>& result,vector<int>& nums) { if(temp.size()>=2) result.insert(temp); set<int> unique; for(int j=startIndex+1;j<nums.size();j++) { if(nums[j]>=nums[startIndex]&&unique.count(nums[j])==0) { unique.insert(nums[j]); temp.push_back(nums[j]); func(j,temp,result,nums); temp.pop_back(); } } return; } vector<vector<int>> findSubsequences(vector<int>& nums) { set<vector<int>> result; vector<vector<int>> resultFinal; vector<int> temp; if(nums.size()<=1) return resultFinal; for(int startIndex=0;startIndex<=nums.size()-2;startIndex++) { temp.push_back(nums[startIndex]); func(startIndex,temp,result,nums); temp.pop_back(); } for(set<vector<int>>::iterator it=result.begin();it!=result.end();it++) resultFinal.push_back(*it); return resultFinal; }};新闻热点
疑难解答