Created
June 3, 2020 15:54
-
-
Save froggomad/b5c91548cee414d44b3d131ad87abce7 to your computer and use it in GitHub Desktop.
quadSum attempt (45 minutes)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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