Skip to content

Commit 84fe468

Browse files
committed
3Sum solution
1 parent d2d4bb1 commit 84fe468

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

3sum/jungsiroo.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class Solution:
2+
def threeSum(self, nums: List[int]) -> List[List[int]]:
3+
# Naive Solution
4+
# Tc : O(n^3) / Sc : O(nC_3)
5+
6+
n = len(nums)
7+
"""
8+
for i in range(n-2):
9+
for j in range(i+1,n-1):
10+
for k in range(j+1, n):
11+
if nums[i]+nums[j]+nums[k] == 0:
12+
ret.add(tuple(sorted([nums[i], nums[j], nums[k]])))
13+
14+
ret = [x for x in ret]
15+
return ret
16+
"""
17+
18+
# Better Solution
19+
# two-sum question with fixed num (traversal in for loop)
20+
# Tc : O(n^2) / Sc : O(n)
21+
ret = []
22+
nums.sort()
23+
24+
for i in range(n):
25+
if i>0 and nums[i] == nums[i-1]:
26+
continue
27+
j, k = i+1, n-1
28+
29+
while j < k:
30+
sum_ = nums[i] + nums[j] + nums[k]
31+
if sum_ < 0 : j += 1
32+
elif sum_ > 0 : k -= 1
33+
else:
34+
ret.append([nums[i], nums[j], nums[k]])
35+
j += 1
36+
37+
while nums[j] == nums[j-1] and j<k:
38+
j += 1
39+
40+
return ret
41+

0 commit comments

Comments
 (0)