Approach:
since we need to find triplet,we fix one nums[i] in given array then we traverse through array for the other two numbers such that their sum is equal to complement of nums[i](i.e,-(nums[i])) using two pointer technique.
we fix low pointer next to the nums[i] and high pointer to the last element.
if nums[i]+nums[low]+nums[high] <0
increase low pointer
if nums[i]+nums[low]+nums[high] >0
decrement high pointer
if nums[i]+nums[low]+nums[high] ==0
add nums[i],nums[low],nums[high] to result list
Python Code:
class Solution(object):
def threeSum(self, nums):
res = []
nums.sort()
for i in range(len(nums)-2):
if nums[i]>0: break #[7]
if i>0 and nums[i]==nums[i-1]: continue
low,high = i+1,len(nums)-1
while low < high:
if nums[i]+nums[low]+nums[high]==0:
res.append([nums[i],nums[low],nums[high]])
while low<high and nums[low]==nums[low+1]:
low+=1
while low<high and nums[high]==nums[high-1]:
high-=1
low+=1
high-=1
elif nums[i]+nums[low]+nums[high]<0:
low+=1
else:
high-=1
return res
Happy Coding 😃!
0 Comments