15.三数之和为0的所有组合

思路:排序后遍历数组,每次遍历后在该数右边设置两个指针向中间移动,如果遍历的数大于0可以直接退出。因为返回要求不重复,在指针移动的过程中碰到和移动前相同的直接跳过

class Solution(object):
    def threeSum(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        nums = sorted(nums)
        print(nums)
        res = []
        for i in range(len(nums)):
            if nums[i]>0:
                break
            if i >=1 and nums[i]==nums[i-1]:
                continue
            l = i+1
            r = len(nums)-1
            while l0:
                    r-=1
                elif nums[i]+nums[l]+nums[r]<0:
                    l+=1
                else:
                    res.append([nums[i],nums[l],nums[r]])
                    l+=1
                    r-=1
                    while l

你可能感兴趣的:(15.三数之和为0的所有组合)