classSolution(object):defthreeSum(self,nums):""" :type nums: List[int] :rtype: List[List[int]] """# # method 1 brute force# mylist=[]# if len(nums)<3:# return []# else:# for i in range(len(nums)):# for j in range(len(nums[i + 1:])):# if (0-nums[i]-nums[i + 1:][j]) in nums[i + 1:][j + 1:]:# sublist=[nums[i],nums[i + 1:][j],0-nums[i]-nums[i + 1:][j]]# if sorted(sublist) not in mylist:# mylist += [sorted(sublist)]# return mylist# method 2nums=sorted(nums)mylist=[]iflen(nums)<3:return[]eliflist(set(nums))==[0]:return[[0,0,0]]else:foriinrange(len(nums)):ifnums[i]==nums[i-1]:continuetarget=nums[i]*(-1)left,right=i+1,len(nums)-1whileleft<right:ifnums[left]+nums[right]>target:right-=1elifnums[left]+nums[right]<target:left+=1else:sublist=[nums[i],nums[left],nums[right]]ifsorted(sublist)notinmylist:mylist+=[sorted(sublist)]right-=1left+=1whileleft<rightandnums[left]==nums[left-1]:left+=1whileleft<rightandnums[right]==nums[right+1]:right-=1returnmylistif__name__=="__main__":answer=Solution()printanswer.threeSum([0,0,0])
近期评论