File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ // 이전에 투포인터를 활용하여 시도했지만 중복된 값들을 처리하는데 어려움이 있었습니다.
2+ // 그래서 해답을 보았고 새로운 방법으로 풀어보았습니다.
3+ // 서로 다른 i와 j 인덱스를 2중 for문으로 진행하면서
4+ // i와 j사이 수들을 set으로 관리합니다.
5+ // set에 -nums[i]-nums[j]가 존재하면 결과 리스트에 추가합니다.
6+ // 시간복잡도 : O(N^2)
7+ // 공간복잡도 : O(N)
8+ class SolutionGotprgmer {
9+ public List <List <Integer >> threeSum (int [] nums ) {
10+ // 결과를 저장할 리스트
11+ List <List <Integer >> result = new ArrayList <>();
12+ Set <Integer > set ;
13+ Set <List <Integer >> resultSet = new HashSet <>();
14+ List <Integer > numList ;
15+
16+
17+ // 리스트 정렬
18+ Arrays .sort (nums );
19+ for (int i =0 ;i <nums .length -2 ;i ++){
20+ if (i > 0 && nums [i - 1 ] == nums [i ]) continue ;
21+
22+ set = new HashSet <>();
23+ for (int j =i +1 ;j <nums .length ;j ++){
24+ int checkNum = nums [i ]+nums [j ];
25+ if (set .contains (-checkNum )){
26+ numList = new ArrayList <>(Arrays .asList (nums [i ], -checkNum , nums [j ]));
27+ if (!resultSet .contains (numList )){
28+ result .add (numList );
29+ resultSet .add (numList );
30+ }
31+ }
32+ set .add (nums [j ]);
33+ }
34+ }
35+ return result ;
36+ }
37+ }
You can’t perform that action at this time.
0 commit comments