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!
2 answers
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?
0 comment threads
BQN, 31 bytes
{⍷(+´⊸=⟜𝕩∧5=≠)¨⊸/⥊(↕2¨𝕨)/¨<∧𝕨}´
This block function returns the empty array ⟨⟩ if the conditions cannot be satisfied. It works by sorting the input list to prevent having to filter additional combinations, then we generate the power set and filter the length 5 lists that satisfy the sum criteria, and then deduplicate.
1 comment thread