Skip to content

Instantly share code, notes, and snippets.

@froggomad
Created June 3, 2020 15:54
Show Gist options
  • Save froggomad/b5c91548cee414d44b3d131ad87abce7 to your computer and use it in GitHub Desktop.
Save froggomad/b5c91548cee414d44b3d131ad87abce7 to your computer and use it in GitHub Desktop.
quadSum attempt (45 minutes)
/*
A solution set is:
[
[-1, 0, 0, 1],
[-2, -1, 1, 2],
[-2, 0, 0, 2]
]
*/
/// 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.
/// Note:
/// The solution set must not contain duplicate quadruplets.
/// Example:
/// Given array nums = [1, 0, -1, 0, -2, 2], and target = 0.
/// - Parameters:
/// - array: The input array wherein there may be a solution reaching the target given 4 of the numbers
/// - target: The solution
/// - Returns: An array of arrays where each array is a solution reaching the target, using 4 numbers from the input array, or an empty set for no solutions found
func quadSum(inputArray array: [Int], target: Int) -> [[Int]] {
var solutionSetPlaceholder: [[Int]] = []
var loopPlaceholder: [Int] = []
for num in array {
print(loopPlaceholder.reduce(0, +), num)
while loopPlaceholder.reduce(0, +) <= target {
loopPlaceholder.append(num)
}
}
if loopPlaceholder.reduce(0, +) == target {
solutionSetPlaceholder.append([Int]())
for num in loopPlaceholder {
solutionSetPlaceholder[solutionSetPlaceholder.count].append(num)
}
print(loopPlaceholder)
}
loopPlaceholder = []
return solutionSetPlaceholder
}
print("output: \(quadSum(inputArray: [1, 0, -1, 0, -2, 2], target: 0))")
assert(quadSum(inputArray: [1, 0, -1, 0, -2, 2], target: 0) ==
[
[-1, 0, 0, 1],
[-2, -1, 1, 2],
[-2, 0, 0, 2]
]
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment