Given an array nums
of n integers, are there elements a, b, c in nums
such that a + b + c= 0? Find all unique triplets in the array which gives the sum of zero.
Note:
The solution set must not contain duplicate triplets.
Example:
Given array nums = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]
主要是时间复杂度的问题,前后写了三种,前两种都是Exceed Limit问题
class Solution(object):
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
rlist=[]
nums.sort()
for i in range(len(nums)):
bindex=i+1
cindex=len(nums)-1
while bindex<cindex:
d=nums[i]+nums[bindex]+nums[cindex]
if d<0:
bindex+=1
elif d>0:
cindex-=1
else:
rlist.append([nums[i],nums[bindex],nums[cindex]])
while bindex<cindex and nums[bindex] == nums[bindex+1]:
bindex += 1
while bindex<cindex and nums[cindex] == nums[cindex-1]:
cindex -= 1
bindex+=1
cindex-=1
temp_set = set(tuple(s) for s in rlist)
new_list = [list(t) for t in temp_set]
return new_list