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 ;
1
3
import java .util .List ;
2
4
5
+ // 시간 복잡도: O(n^2) - nums 배열을 정렬하는 데 O(nlogn) 소요, 이후 이중 포인터로 O(n^2)
6
+ // 공간 복잡도: O(1) - 결과 리스트를 제외한 추가 공간 사용 없음
3
7
class Solution {
4
8
public List <List <Integer >> threeSum (int [] nums ){
9
+ Arrays .sort (nums );
5
10
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 ;
6
34
}
7
- }
35
+ }
You can’t perform that action at this time.
0 commit comments