您的位置:首页 > 其它

[Leetcode] #78#90 Subsets I & II

2017-02-14 21:38 507 查看

Discription:

Given a set of distinct integers, nums, return all possible subsets.Note: The solution set must not contain duplicate subsets.For example,
If nums = 
[1,2,3]
, a solution is:[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

Solution:

void subsets(vector<int>& nums, vector<vector<int>> &result, vector<int> &temp,int begin) {
result.push_back(temp);
for (int i = begin; i < nums.size(); i++){
temp.push_back(nums[i]);
subsets(nums, result, temp, i + 1);
temp.pop_back();
}
}

vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> result;
vector<int> temp;
subsets(nums, result,temp, 0);
return result;
}

Discription:

Given a collection of integers that might contain duplicates, nums, return all possible subsets.Note: The solution set must not contain duplicate subsets.For example,
If nums = 
[1,2,2]
, a solution is:[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]

Solution:

void subsets(vector<int>& nums, vector<vector<int>> &result, vector<int> &temp,int begin) {
result.push_back(temp);
for (int i = begin; i < nums.size(); i++){
if (i == begin || nums[i] != nums[i - 1]) {
temp.push_back(nums[i]);
subsets(nums, result, temp, i + 1);
temp.pop_back();
}
}
}

vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<vector<int>> result;
vector<int> temp;
subsets(nums, result,temp, 0);
return result;
}
bool isDuplicate(vector<int>& nums, int begin, int i){
while (i > begin){
if (nums[i] == nums[begin])
return false;
i--;
}
return true;
}

void subsets(vector<int>& nums, vector<vector<int>> &result, vector<int> &temp,int begin) {
result.push_back(temp);
for (int i = begin; i < nums.size(); i++){
if (!isDuplicate(nums, begin, i))
continue;
temp.push_back(nums[i]);
subsets(nums, result, temp, i + 1);
temp.pop_back();

}
}

vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<vector<int>> result;
vector<int> temp;
subsets(nums, result,temp, 0);
return result;
}
GitHub-Leetcode:https://github.com/wenwu313/LeetCode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: