Given an array nums
of n
integers, return an array of all the unique quadruplets [nums[a], nums[b], nums[c], nums[d]]
such that:
-
0 <= a, b, c, d < n
-
a
,b
,c
, andd
are distinct. -
nums[a] + nums[b] + nums[c] + nums[d] == target
You may return the answer in any order.
Example 1:
Input: nums = [1,0,-1,0,-2,2], target = 0
Output: [[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]
Example 2:
Input: nums = [2,2,2,2,2], target = 8
Output: [[2,2,2,2]]
Constraints:
-
1 <= nums.length <= 200
-
-109 <= nums[i] <= 109
-
-109 <= target <= 109
SOLUTION:
class Solution:
def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
n = len(nums)
nums.sort()
res = set()
for i in range(n):
a = nums[i]
for j in range(i + 1, n - 2):
b = nums[j]
start = j + 1
end = n - 1
while start < end:
c = nums[start]
d = nums[end]
total = b + c + d
if total == target - a:
res.add(tuple([a, b, c, d]))
start += 1
end -= 1
elif total > target - a:
end -= 1
else:
start += 1
return list(res)
Top comments (0)