Skip to content

Commit 9c0d932

Browse files
add 90
1 parent baacf2f commit 9c0d932

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ LeetCode
4444
|0083|[Remove Duplicates from Sorted List](https://leetcode.com/problems/remove-duplicates-from-sorted-list/) | c | [c++](./src/0083-Remove-Duplicates-from-Sorted-List/0083.cpp) |[python](./src/0083-Remove-Duplicates-from-Sorted-List/0083.py)|||Easy|
4545
|0086|[Partition List](https://leetcode.com/problems/partition-list/) | c | [c++](./src/0086-Partition-List/0086.cpp) |[python](./src/0086-Partition-List/0086.py)|||Medium|
4646
|0088|[Merge Sorted Array](https://leetcode.com/problems/merge-sorted-array/) | c | [c++](./src/0088-Merge-Sorted-Array/0088.cpp) |[python](./src/0088-Merge-Sorted-Array/0088.py)|||Easy|
47+
|0090|[Subsets II](https://leetcode.com/problems/subsets-ii/) | c | [c++](./src/0090-Subsets-II/0090.cpp) |[python](./src/0090-Subsets-II/0090.py)|||Medium|
4748
|0092|[Reverse Linked List II](https://leetcode.com/problems/reverse-linked-list-ii/) | c | [c++](./src/0092-Reverse-Linked-List-II/0092.cpp) |[python](./src/0092-Reverse-Linked-List-II/0092.py)|||Medium|
4849
|0093|[Restore IP Addresses](https://leetcode.com/problems/restore-ip-addresses/) | c | [c++](./src/0093-Restore-IP-Addresses/0093.cpp) |[python](./src/0093-Restore-IP-Addresses/0093.py)|||Medium|
4950
|0094|[Binary Tree Inorder Traversal](https://leetcode.com/problems/binary-tree-inorder-traversal/) | c | [c++](./src/0094-Binary-Tree-Inorder-Traversal/0094.cpp) |[python](./src/0094-Binary-Tree-Inorder-Traversal/0094.py)|||Medium|

src/0090-Subsets-II/0090.cpp

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include <iostream>
2+
#include <string>
3+
#include <vector>
4+
#include <algorithm>
5+
using namespace std;
6+
7+
static int x = []() {std::ios::sync_with_stdio(false); cin.tie(0); return 0; }();
8+
class Solution
9+
{
10+
public:
11+
vector<vector<int>> subsetsWithDup(vector<int>& nums)
12+
{
13+
sort(nums.begin(), nums.end());
14+
vector<vector<int>> result;
15+
vector<int> path;
16+
_subsetsWithDup(nums, 0, path, result);
17+
return result;
18+
}
19+
private:
20+
void _subsetsWithDup(vector<int>& nums, int index, vector<int>& path, vector<vector<int>>& result)
21+
{
22+
result.push_back(path);
23+
for (int i = index; i < nums.size(); ++i)
24+
{
25+
if (index < i and nums[i] == nums[i - 1]) continue;
26+
path.push_back(nums[i]);
27+
_subsetsWithDup(nums, i + 1, path, result);
28+
path.pop_back();
29+
}
30+
}
31+
};

src/0090-Subsets-II/0090.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution:
2+
def subsetsWithDup(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: List[List[int]]
6+
"""
7+
nums.sort()
8+
result = list()
9+
self._subsetsWithDup(nums, 0, list(), result)
10+
return result
11+
12+
def _subsetsWithDup(self, nums, index, path, result):
13+
result.append(path.copy())
14+
for i in range(index, len(nums)):
15+
if index < i and nums[i] == nums[i - 1]:# add
16+
continue
17+
self._subsetsWithDup(nums, i + 1, path + [nums[i]], result)
18+
19+
if __name__ == '__main__':
20+
nums = [1, 2, 2]
21+
print(Solution().subsetsWithDup(nums))

0 commit comments

Comments
 (0)