Find all unique quintuplets in an array that sum to a given target
Inspiration: Leetcode's [3Sum] link
Link on CG&CC
Problem
Given an array
nums
ofn
(not necessarily distinct) integers, and given a target numbertarget
, return an array of all of the unique quintuplets[nums[a],nums[b],nums[c],nums[d],nums[e]]
such that the following conditions are held:
0 <= a,b,c,d,e < n
(or1 <= a,b,c,d,e <= n
if using 1-indexing)- All of
a,b,c,d,e
are distinct.nums[a] + nums[b] + nums[c] + nums[d] + nums[e] = target
- In the case of multiple arrays, we also add the requirements that at least two values in each of the arrays are distinct.
If all 3 conditions cannot be satisfied, you can return a junk value of your liking, or just an empty array
[[]]
or[]
. The testcases down below will use-1
as the specified junk value.You may return the answer in any order. For example, given the array
[-5,-2,-2,1,3,4,6]
and target0
, you could return any permutation of[[-5,-2,-2,3,6]]
. You do not need to return all possible permutations of one single array.
Testcases:
Array: [-5,-2,-2,1,3,4,6]
Target: 0
Output: [[-5,-2,-2,3,6]]
Array: [-5,-4,-2,0,1,2,6]
Target: 1
Output: [[-5,-2,0,2,6],[-4,-2,0,1,6]]
# Note that outputting `[[-4,-2,0,1,6],[-5,-2,0,2,6]]` is also valid,
# although returning just `[[-4,-2,0,1,6]]` or `[[-5,-2,0,2,6]]` is not.
Array: [0,-1,2,3]
Target: 4
Output: -1
Array: [0,1,-9,6,7]
Target: 6
Output: -1
Array: [0,1,9,9,5]
Target: 45
Output: -1
Array: [1,4,6,9,-4]
Target: 16
Output: [[1,4,6,9,-4]]
Array: [1,0,9,6,5,0]
Target: 21
Output: [[1,0,9,6,5]]
Array: [1,0,9,6,5,4,7]
Target: 21
Output: [[1,0,9,6,5],[1,0,9,4,7]]
Array: [1,0,9,6,5,4,4,7]
Target: 21
Output: [[1,0,9,6,5],[1,0,9,4,7],[0,6,4,4,7],[1,5,4,4,7]]
Array: [1,1,2,2,3,3,4,4]
Target: 11
Output: [[1,2,2,3,3],[1,1,2,3,4]]
Array: [-1,1,1,1,1,1,3]
Target: 5
Output: [[1,1,1,1,1],[-1,1,1,1,3]]
# Above test case suggested by @trichoplax
This is [code-golf], so the shortest solution wins!
1 answer
Japt, 12 bytes
Outputs an empty array if no solution is possible.
Íà5 â fÈx ¶V
Íà5 â fÈx ¶V :Implicit input of array U & target integer V
Í :Sort U
à5 :Combinations of length 5
â :Deduplicate
f :Filter by
È :Passing through the following function
x : Reduce by addition
¶V : Equal to V?
1 comment thread