18. 4Sum (Medium) - TengnanYao/daily_leetcode GitHub Wiki

class Solution(object):
    def fourSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        nums.sort()
        result = []
        n = len(nums)
        for i in range(n):
            for j in range(i + 1, n):
                l, r = j + 1, n - 1
                t = target - nums[i] - nums[j]
                while l < r:
                    if nums[l] + nums[r] == t:
                        if [nums[i], nums[j], nums[l], nums[r]] not in result:
                            result.append([nums[i], nums[j], nums[l], nums[r]])
                        l += 1
                        r -= 1
                    elif nums[l] + nums[r] > t:
                        r -= 1
                    else:
                        l += 1
        return result