Description
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
, and d
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
Code
邏輯和 3Sum 一樣,只是在外面多套上一層 for loop,以及因為 Constraints 所以使用 long
而非 int
。
可以使用 recursion 以 Two Sum 為基礎 scale 到 kSum 問題,同時配合 backtracking 的技巧,讓 path
先 push_back
再 pop_back
。
要注意在 dfs 的 function declaration 中 long target
,去避免 integer overflow。
Source