Given a set of distinct integers, nums, return all possible subsets (the power set).
가능한 모든 부분집합을 구하라.
Note: The solution set must not contain duplicate subsets.
Example:
Input: nums = [1,2,3] Output: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
풀이:
전형적인 백트래킹 문제이다.
cnt가 nums길이와 같아지면 종료하지만 그 전에 만들어지는 모든 경우의 수 역시 정답에 저장한다.
class Solution {
public:
vector<vector<int>> result;
void BackTracking(int cnt, int idx, vector<int>& v, vector<int> &nums){
if(cnt == nums.size()+1){
return;
}
result.push_back(v);
for(int i = idx; i<nums.size(); i++){
v.push_back(nums[i]);
BackTracking(cnt+1, i+1, v, nums);
v.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
vector<int> tmp;
BackTracking(0,0,tmp,nums);
return result;
}
};
'알고리즘 문제풀이 > leetcode' 카테고리의 다른 글
[leetcode 39] Combination Sum (0) | 2020.10.25 |
---|---|
[leetcode 105] Construct Binary Tree from Preorder and Inorder Traversal (0) | 2020.10.24 |
[leetcode 104] Maximum Depth of Binary Tree (0) | 2020.10.23 |
[leetcode 200] Number of Islands (0) | 2020.10.23 |
[leetcode 207] Course Schedule (0) | 2020.10.23 |
댓글