File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .ArrayList ;
2
+ import java .util .HashMap ;
3
+ import java .util .HashSet ;
4
+ import java .util .List ;
5
+ import java .util .Map ;
6
+ import java .util .Set ;
7
+
8
+ class Solution {
9
+ public List <List <Integer >> threeSum (int [] nums ) {
10
+ List <List <Integer >> result = new ArrayList <>();
11
+
12
+ Map <Integer , Integer > counter = new HashMap <>();
13
+ for (int num : nums ) {
14
+ int count = counter .getOrDefault (num , 0 );
15
+ counter .put (num , count + 1 );
16
+ }
17
+
18
+ Set <Integer > keySet = new HashSet <>(counter .keySet ());
19
+ for (int num1 : keySet ) {
20
+ int num1Count = counter .get (num1 );
21
+ if (num1Count > 1 ) {
22
+ counter .put (num1 , num1Count - 1 );
23
+ } else {
24
+ counter .remove (num1 );
25
+ }
26
+
27
+ for (int num2 : counter .keySet ()) {
28
+ int num3 = -num1 - num2 ;
29
+ int count = counter .getOrDefault (num3 , 0 );
30
+ if (((num2 == num3 && count >= 2 ) || (num2 != num3 && count >= 1 )) && num3 >= num2 ) {
31
+ result .add (List .of (num1 , num2 , num3 ));
32
+ }
33
+ }
34
+
35
+ counter .remove (num1 );
36
+ }
37
+
38
+ return result ;
39
+ }
40
+ }
You can’t perform that action at this time.
0 commit comments