-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path15_3Sum.py
28 lines (26 loc) · 899 Bytes
/
15_3Sum.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution:
def threeSum(self, nums):
result = []
nums = sorted(nums) #Time Complexity O(NlogN)
for i in range(len(nums)-2):
if nums[i] > 0: #O(1)
break
if i>0 and nums[i]==nums[i-1]: # O(1)
continue
l= i+1 # O(1)
r= len(nums)-1 # O(1)
while l<r: # O(N)
temp_result = nums[i]+nums[l]+nums[r]
if temp_result>0:
r -= 1
elif temp_result <0:
l += 1
else:
result.append([nums[i],nums[l],nums[r]])
while l<r and nums[l] == nums[l+1]:
l +=1
while l<r and nums[r] == nums[r-1]:
r-=1
l+=1
r-=1
return result