File tree Expand file tree Collapse file tree 1 file changed +58
-0
lines changed Expand file tree Collapse file tree 1 file changed +58
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def threeSum (self , nums : List [int ]) -> List [List [int ]]:
3
+ nums .sort ()
4
+ res = []
5
+ n = len (nums )
6
+
7
+ for i in range (n ):
8
+ if i > 0 and nums [i ] == nums [i - 1 ]:
9
+ continue
10
+
11
+ target = - nums [i ]
12
+ seen = set ()
13
+ j = i + 1
14
+
15
+ while j < n :
16
+ complement = target - nums [j ]
17
+ if complement in seen :
18
+ res .append ([nums [i ], complement , nums [j ]])
19
+ while j + 1 < n and nums [j ] == nums [j + 1 ]:
20
+ j += 1
21
+ seen .add (nums [j ])
22
+ j += 1
23
+ return list (set (tuple (x ) for x in res ))
24
+
25
+
26
+ class Solution :
27
+ def threeSum (self , nums : List [int ]) -> List [List [int ]]:
28
+ nums .sort ()
29
+ result = []
30
+
31
+ for i in range (len (nums )):
32
+ # 중복된 첫 번째 수는 skip
33
+ if i > 0 and nums [i ] == nums [i - 1 ]:
34
+ continue
35
+
36
+ left , right = i + 1 , len (nums ) - 1
37
+
38
+ while left < right :
39
+ total = nums [i ] + nums [left ] + nums [right ]
40
+
41
+ if total == 0 :
42
+ result .append ([nums [i ], nums [left ], nums [right ]])
43
+
44
+ # 중복된 두 번째, 세 번째 수 건너뛰기
45
+ while left < right and nums [left ] == nums [left + 1 ]:
46
+ left += 1
47
+ while left < right and nums [right ] == nums [right - 1 ]:
48
+ right -= 1
49
+
50
+ left += 1
51
+ right -= 1
52
+
53
+ elif total < 0 :
54
+ left += 1 # 합이 작으면 왼쪽을 오른쪽으로
55
+ else :
56
+ right -= 1 # 합이 크면 오른쪽을 왼쪽으로
57
+
58
+ return result
You can’t perform that action at this time.
0 commit comments