1
- import java .util .ArrayList ;
2
- import java .util .Arrays ;
3
1
import java .util .List ;
4
2
5
- /**
6
- * ๋ฌธ์ ํ์ด
7
- */
8
- // -4 -1 -1 0 2 2
9
- // p1 p2 p3 sum < 0 -> p2 ์์ผ๋ก
10
- // p1 p2 p3 sum < 0 -> p2 ์์ผ๋ก
11
- // p1 p2 p3 sum < 0 -> p2 ์์ผ๋ก
12
- // p1 p2p3 sum = 0 -> p1 ์์ผ๋ก
13
- // p1 p2 p3 sum = 0 -> p3 ๊ฐ ๋ค๋ฅธ ๊ฒ ๋์ฌ ๋๊น์ง ์ด๋
14
- // p1 p2 p3 sum < 0 -> p2 ์์ผ๋ก ์ธ๋ฐ, p2 > p3 ๋๋ฏ๋ก p1 ์์ผ๋ก
15
- // p1 p2 p3 sum = 0 ๋ฐ๋ณต
3
+ class Solution {
4
+ public List <List <Integer >> threeSum (int [] nums ){
16
5
17
- /**
18
- * ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋
19
- */
20
- // ์๊ฐ ๋ณต์ก๋ - ์ํ ํ์: n + (n-1) + (n-2) + .. => O(N^2)
21
- // ๊ณต๊ฐ ๋ณต์ก๋ - ๋ฐฐ์ด์ ์ ๋ ฌํ๋ ๋ฐ O(n log n)์ ๊ณต๊ฐ + ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ answer ๋ฆฌ์คํธ๋ ๋ฌธ์ ์ ์๊ตฌ์ ๋ฐ๋ผ O(k)์ ๊ณต๊ฐ = O(n log n) (๋ฐฐ์ด ์ ๋ ฌ์ ์ํ ๊ณต๊ฐ) + O(k) (๊ฒฐ๊ณผ ์ ์ฅ ๊ณต๊ฐ)
22
-
23
- class Solution {
24
- public List <List <Integer >> threeSum (int [] nums ) {
25
- Arrays .sort (nums ); // Sort the array first
26
- List <List <Integer >> answer = new ArrayList <>();
27
-
28
- for (int pointer1 = 0 ; pointer1 < nums .length - 2 ; pointer1 ++) {
29
- // pointer1 ์ ์ค๋ณต ๊ฐ skip
30
- if (pointer1 > 0 && nums [pointer1 ] == nums [pointer1 - 1 ]) {
31
- continue ;
32
- }
33
-
34
- int pointer2 = pointer1 + 1 ; // pointer2 ๋ pointer1 ์ ํ ์นธ ์
35
- int pointer3 = nums .length - 1 ; // pointer3 ๋ ๋์์ ๋ถํฐ
36
-
37
- while (pointer2 < pointer3 ) {
38
- int sum = nums [pointer1 ] + nums [pointer2 ] + nums [pointer3 ];
39
-
40
- if (sum < 0 ) {
41
- pointer2 ++;
42
- } else if (sum > 0 ) {
43
- pointer3 --;
44
- } else {
45
- // sum == 0
46
- answer .add (Arrays .asList (nums [pointer1 ], nums [pointer2 ], nums [pointer3 ]));
47
-
48
- // pointer2 ์ค๋ณต ๊ฐ ์ ๊ฑฐ
49
- while (pointer2 < pointer3 && nums [pointer2 ] == nums [pointer2 + 1 ]) {
50
- pointer2 ++;
51
- }
52
-
53
- // pointer3 ์ค๋ณต ๊ฐ ์ ๊ฑฐ
54
- while (pointer2 < pointer3 && nums [pointer3 ] == nums [pointer3 - 1 ]) {
55
- pointer3 --;
56
- }
57
-
58
- // ๋ ๊ฐ ๋ชจ๋ move
59
- pointer2 ++;
60
- pointer3 --;
61
- }
62
- }
63
- }
64
-
65
- return answer ;
66
6
}
67
- }
68
-
69
-
7
+ }
0 commit comments