解题思路:两边夹逼,跳过重复,使用set去重。
class Solution(object):
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
ans = []
nums.sort()
for i in range(len(nums) - 2):
if nums[i] > 0:
break
if i > 0 and nums[i] == nums[i-1]:
continue
j = i + 1
k = len(nums) - 1
while j < k:
if nums[i] + nums[j] + nums[k] > 0:
k -= 1
while(nums[k] == nums[k + 1] and j < k):
k -= 1
elif nums[i] + nums[j] + nums[k] < 0:
j+=1
while(nums[j] == nums[j - 1] and j < k):
j += 1
else:
list1 = (nums[i], nums[j], nums[k])
ans.append(list1)
j += 1
k -= 1
while(nums[k] == nums[k + 1] and j < k):
k -= 1
while(nums[j] == nums[j - 1] and j < k):
j += 1
return list(set(ans))