leecode之3Sum

来源:互联网 发布:广西广电网络快吗 编辑:程序博客网 时间:2024/05/18 03:29
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 res
listnumsIntence=[1,0]print ssum(listnumsIntence)
0 0