FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Interview_Prep-Coding-Java/Recursion/Subsets II.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 II.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
44 lines (44 loc) · 1.36 KB
Breadcrumbs
Interview_Prep-Coding-Java
/
Recursion
/
Subsets II.java
Copy path
File metadata and controls
44 lines (44 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
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