File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
Expand file tree Collapse file tree 1 file changed +41
-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+ # 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+
You can’t perform that action at this time.
0 commit comments