leetcode-Subsets-78
Posted 0_summer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-Subsets-78相关的知识,希望对你有一定的参考价值。
输入一个数组,求所有子集
也是选择问题,在上一题的基础上枚举子集长度,然后dfs+回溯选择。同样注意去重
1 class Solution { 2 public: 3 void dfs(vector<int> a,int i,vector<vector<int> > &v,vector<int> vv,int k){ 4 if(vv.size()==k){ 5 v.push_back(vv); 6 return; 7 } 8 for(int j=i+1;j<a.size();j++){ 9 if(j!=i+1&&a[j]==a[j-1]) continue; 10 vv.push_back(a[j]); 11 dfs(a,j,v,vv,k); 12 vv.pop_back(); 13 } 14 } 15 vector<vector<int> > subsets(vector<int>& nums) { 16 int len=nums.size(); 17 vector<vector<int> > v; 18 if(len==0) return v; 19 vector<int> vv; 20 v.push_back(vv); 21 sort(nums.begin(),nums.end()); 22 for(int k=1;k<=len;k++){ 23 for(int i=0;i<len;i++){ 24 vv.push_back(nums[i]); 25 dfs(nums,i,v,vv,k); 26 vv.pop_back(); 27 } 28 } 29 return v; 30 } 31 };
以上是关于leetcode-Subsets-78的主要内容,如果未能解决你的问题,请参考以下文章