320x100
https://leetcode.com/problems/subsets-ii/
중복될 수 있는 정수가 포함된 목록의 모든 하위 목록을 반환하는 문제다.
일전에 풀었던 문제와 비슷하지만, 목록의 조건이 다르다. (중복)
그렇기 때문에 선 정렬 후 이전 문제와 동일한 방법으로 풀면 되는데.. 속도는 느린것 같다 ㅎ..
class Solution {
public:
void solve(vector<int>& nums, vector<int>& v, int index) {
if (find(ret_.begin(), ret_.end(), v) == ret_.end())
ret_.push_back(v);
for (int i=index; i<nums.size(); ++i) {
v.push_back(nums[i]);
solve(nums, v, i + 1);
v.pop_back();
}
}
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<int> subset;
for (int i=0; i<nums.size(); ++i) {
solve(nums, subset, i);
subset.clear();
}
return ret_;
}
private:
vector<vector<int>> ret_;
};
320x100
'코딩테스트 준비 > leetcode' 카테고리의 다른 글
21. Merge Two Sorted Lists (0) | 2021.09.22 |
---|---|
20. Valid Parentheses (0) | 2021.09.21 |
82. Remove Duplicates from Sorted List II (0) | 2021.08.29 |
81. Search in Rotated Sorted Array II (0) | 2021.08.28 |
80. Remove Duplicates from Sorted Array II (0) | 2021.08.28 |