Skip to content

Latest commit

 

History

History
31 lines (29 loc) · 953 Bytes

File metadata and controls

31 lines (29 loc) · 953 Bytes
class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        ans = []
        length = len(nums)
        if (not nums or length < 3):
            return ans
        nums.sort()
        for k in range(length - 2):
            if (nums[k] > 0):
                return ans
            if (k > 0 and nums[k] == nums[k - 1]):
                continue
            l, r = k + 1, length - 1
            while (l < r):
                if (nums[k] + nums[l] + nums[r] == 0):
                    ans.append([nums[k], nums[l], nums[r]])
                    while (l < r and nums[l] == nums[l + 1]):
                        l += 1
                    while (l < r and nums[r] == nums[r - 1]):
                        r -= 1
                    l += 1
                    r -= 1
                elif nums[k] + nums[l] + nums[r] > 0:
                    r -= 1
                else:
                    l += 1
        return ans