Skip to content

Commit be7853c

Browse files
committed
feat: Solve 3sum problem
1 parent 7b8df80 commit be7853c

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

โ€Ž3sum/hu6r1s.pyโ€Ž

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution:
2+
"""
3+
1. 3 way for๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด์„œ 0์ธ ํ•ฉ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•
4+
- O(n^3)์œผ๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ
5+
2. ํˆฌํฌ์ธํ„ฐ
6+
- ์ •๋ ฌ ํ›„ ํˆฌํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ค‘๋ณต ์ œ๊ฑฐ์™€ ์ตœ์ ํ™”๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰
7+
- O(n^2)
8+
๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” ๋‘˜๋‹ค O(1)
9+
"""
10+
def threeSum(self, nums: List[int]) -> List[List[int]]:
11+
result = []
12+
nums.sort()
13+
14+
for i in range(len(nums)):
15+
if i > 0 and nums[i] == nums[i - 1]:
16+
continue
17+
18+
left, right = i + 1, len(nums) - 1
19+
while left < right:
20+
total = nums[i] + nums[left] + nums[right]
21+
22+
if total == 0:
23+
result.append([nums[i], nums[left], nums[right]])
24+
left += 1
25+
right -= 1
26+
27+
while left < right and nums[left] == nums[left - 1]:
28+
left += 1
29+
while left < right and nums[right] == nums[right + 1]:
30+
right -= 1
31+
32+
elif total < 0:
33+
left += 1
34+
else:
35+
right -= 1
36+
37+
return result

0 commit comments

Comments
ย (0)