def ssum(listnums): if type(listnums)!=list or len(listnums)<3:#异常输入处理 return 'please modify your input data' res=[]#定义一个返回列表 listnums.sort()#对输入数据排序,有利于检查重复数据 for i in xrange(len(listnums)-2):#i表示三个数中的一个,所以取值机会为整体长度减2 left,right=i+1,len(listnums)-1#用两个指针来搜索取值 while left < right:#左边边界一直小于右边 threeSum = listnums[i] + listnums[left]+listnums[right] if threeSum > 0:#大于0时右边向左移动 right -= 1 elif threeSum < 0:#小于0时左边向右移动 left += 1 else:#符合条件时将元组加入列表 res.append((listnums[i],listnums[left],listnums[right])) while left <right and listnums[left] == listnums[left+1]:#处理重复数据,更新左边界位置 left += 1 while left <right and listnums[right] == listnums[right-1]:#处理重复数据,更新右边界位置 right -= 1 left += 1#为下次搜索做准备,更新左位置 right -= 1#为下次搜索做准备,更新右位置return reslistnumsIntence=[1,0]print ssum(listnumsIntence)
leecode之3Sum
最新推荐文章于 2022-09-26 22:32:08 发布