FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Interview_Prep-Coding-Java/Recursion/Subsets I.java at main · py3-coder/Interview_Prep-Coding-Java · GitHub
py3-coder
/
Interview_Prep-Coding-Java
Public
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Issues
0
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
Interview_Prep-Coding-Java
/
Recursion
/
Subsets I.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
49 lines (45 loc) · 1.36 KB
Breadcrumbs
Interview_Prep-Coding-Java
/
Recursion
/
Subsets I.java
Copy path
File metadata and controls
49 lines (45 loc) · 1.36 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
Link : https://leetcode.com/problems/subsets-ii/
90. Subsets II
Medium
Given an integer array nums that may contain duplicates, return all possible subsets (the power set).
The solution set must not contain duplicate subsets. Return the solution in any order.
Example 1:
Input: nums = [1,2,2]
Output: [[],[1],[1,2],[1,2,2],[2],[2,2]]
Example 2:
Input: nums = [0]
Output: [[],[0]]
Constraints:
1 <= nums.length <= 10
-10 <= nums[i] <= 10
*/
class
Solution
{
public
List
<
List
<
Integer
>>
subsetsWithDup
(
int
[]
nums
) {
List
<
List
<
Integer
>>
res
=
new
ArrayList
<>();
ArrayList
<
Integer
>
ans
=
new
ArrayList
<>();
Set
<
List
<
Integer
>>
set
=
new
HashSet
<>();
Arrays
.
sort
(
nums
);
Solve
(
0
,
nums
,
ans
,
res
);
for
(
List
<
Integer
>
obj
:
res
){
set
.
add
(
obj
);
}
res
.
removeAll
(
res
);
for
(
List
<
Integer
>
obj
:
set
){
res
.
add
(
obj
);
}
return
res
;
}
public
static
void
Solve
(
int
i
,
int
nums
[],
ArrayList
<
Integer
>
ans
,
List
<
List
<
Integer
>>
res
){
if
(
i
==
nums
.
length
){
res
.
add
(
new
ArrayList
<
Integer
>(
ans
));
return
;
}
//Pick
ans
.
add
(
nums
[
i
]);
// add elemnet
Solve
(
i
+
1
,
nums
,
ans
,
res
);
// call for Pick
ans
.
remove
(
ans
.
size
()-
1
);
// remove the last for not pick
//Not pick
Solve
(
i
+
1
,
nums
,
ans
,
res
);
// call for not pick
}
}
Back
|
FazBrowse Home
|
New Git URL