您的位置:首页 > 其它

Subsets

2015-07-05 22:45 337 查看
class Solution {

public:

vector<vector<int>> subsets(vector<int>& nums) {

sort(nums.begin(),nums.end());

vector<vector<int>>result;

vector<int>path;

dfs(nums,path,0,result);

return result;

}

void dfs(vector<int>& nums, vector<int>&path,int step,vector<vector<int>>&result){

if(step==nums.size())

{

result.push_back(path);

return;

}

dfs(nums,path,step+1,result); //每次有插入和空两种情况;

path.push_back(nums[step]);

dfs(nums,path,step+1,result);

path.pop_back();

}

};

第二种方法类似于排列组合

class Solution {

public:

vector<vector<int> > subsets(vector<int> &S)

{

vector<vector<int> > result;

vector<int> subset;

sort(S.begin(),S.end());

result.push_back(subset);

DFS(S,0,subset,result);

return result;

}

void DFS(vector<int> S , int start , vector<int> &subset , vector<vector<int> > &result)

{

if(start == S.size())

{

return;

}

for(int i = start ; i < S.size() ; i++)

{

subset.push_back(S[i]);

result.push_back(subset);

DFS(S,i+1,subset,result);

subset.pop_back( );

}

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: