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