File tree Expand file tree Collapse file tree 1 file changed +29
-1
lines changed
Expand file tree Collapse file tree 1 file changed +29
-1
lines changed Original file line number Diff line number Diff line change 1+ import java .util .ArrayList ;
2+ import java .util .Arrays ;
13import java .util .List ;
24
5+ // 시간 복잡도: O(n^2) - nums 배열을 정렬하는 데 O(nlogn) 소요, 이후 이중 포인터로 O(n^2)
6+ // 공간 복잡도: O(1) - 결과 리스트를 제외한 추가 공간 사용 없음
37class Solution {
48 public List <List <Integer >> threeSum (int [] nums ){
9+ Arrays .sort (nums );
510
11+ List <List <Integer >> result = new ArrayList <>();
12+
13+ for (int i =0 ;i <nums .length -2 ;i ++){
14+ if (i >0 && nums [i ] == nums [i -1 ]) continue ; // 중복된 값 건너뛰기
15+ int left = i +1 ;
16+ int right = nums .length -1 ;
17+
18+ while (left < right ){
19+ int sum = nums [i ] + nums [left ] + nums [right ];
20+ if (sum == 0 ){
21+ result .add (Arrays .asList (nums [i ], nums [left ], nums [right ]));
22+ while (left < right && nums [left ] == nums [left +1 ]) left ++; // 중복된 값 건너뛰기
23+ while (left < right && nums [right ] == nums [right -1 ]) right --; // 중복된 값 건너뛰기
24+ left ++;
25+ right --;
26+ } else if (sum < 0 ){
27+ left ++;
28+ } else {
29+ right --;
30+ }
31+ }
32+ }
33+ return result ;
634 }
7- }
35+ }
You can’t perform that action at this time.
0 commit comments