3sum python 解法

来源:互联网 发布:网络教育专科报名条件 编辑:程序博客网 时间:2024/05/22 17:32
class Solution:    # @return a list of lists of length 3, [[val1,val2,val3]]    def threeSum(self, num):        num.sort()        res = []        for i in range(len(num)-2):            if i == 0 or num[i] > num[i-1]:                left = i + 1; right = len(num) - 1                while left < right:                    if num[left] + num[right] == -num[i]:                        res.append([num[i], num[left], num[right]])                        left += 1; right -= 1                        while left < right and num[left] == num[left-1]: left +=1                        while left < right and num[right] == num[right+1]: right -= 1                    elif num[left] + num[right] < -num[i]:                        while left < right:                            left += 1                            if num[left] > num[left-1]: break                    else:                        while left < right:                            right -= 1                            if num[right] < num[right+1]: break        return res

来自http://www.cnblogs.com/zuoyuan/p/3699159.html



0 0
原创粉丝点击