题目描述:

中文:

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

英文:

Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.

class Solution(object):
    def fourSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        nums = sorted(nums)
        res = []

        if not nums or len(nums) < 4:
            return res

        if nums[0] + nums[1] + nums[2] + nums[3] > target:
            return res

        if nums[-1] + nums[-2] + nums[-3] + nums[-4] < target:
            return res

        for i in range(0, len(nums)):
            if nums[i] + nums[-1] + nums[-2] + nums[-3] < target:
                continue
            for j in range(i + 1, len(nums) - 2):
                if nums[i] + nums[j] + nums[-2] + nums[-1] < target:
                    continue
                x = j + 1
                y = len(nums) - 1
                while x < y:
                    if nums[i] + nums[j] + nums[x] + nums[y] == target:
                        res.append([nums[i], nums[j], nums[x], nums[y]])
                        x = x + 1
                        while x < y and nums[x] == nums[x - 1]:
                            x = x + 1
                    elif nums[i] + nums[j] + nums[x] + nums[y] < target:
                        x = x + 1
                    else:
                        y = y - 1

        rr = []
        for r in res:
            if r not in rr:
                rr.append(r)
        return rr

题目来源:力扣题库

01-15 07:42