📖 Scenario: You are working on a shopping app that wants to find all unique combinations of four product prices that add up to a special discount target.This helps the app suggest bundles of four products that together match a customer's budget exactly.
🎯 Goal: Build a program that finds all unique quadruplets (groups of four numbers) in an array that sum up to a given target number.This will help the app find all possible product bundles matching the discount target.
📋 What You'll Learn
Create an array called prices with the exact values: [1, 0, -1, 0, -2, 2]
Create a variable called target and set it to 0
Write a function called fourSum that takes prices and target as parameters and returns all unique quadruplets that sum to target
Use sorting and two-pointer technique inside fourSum to find quadruplets efficiently
Print the result of calling fourSum(prices, target)
💡 Why This Matters
🌍 Real World
Finding product bundles that match a customer's budget exactly helps e-commerce apps suggest attractive deals.
💼 Career
This problem teaches array manipulation, sorting, and two-pointer techniques used in coding interviews and real-world data processing.
Progress0 / 4 steps
1
Create the prices array
Create an array called prices with these exact values: [1, 0, -1, 0, -2, 2]
DSA Javascript
Hint
Use const prices = [1, 0, -1, 0, -2, 2]; to create the array.
2
Set the target sum
Create a variable called target and set it to 0
DSA Javascript
Hint
Use const target = 0; to set the target sum.
3
Write the fourSum function
Write a function called fourSum that takes prices and target as parameters and returns all unique quadruplets that sum up to target. Use sorting and two-pointer technique inside the function.
DSA Javascript
Hint
Sort the array first. Use two nested loops for the first two numbers, then use two pointers for the last two numbers. Skip duplicates to keep quadruplets unique.
4
Print the result
Print the result of calling fourSum(prices, target)
DSA Javascript
Hint
Use console.log(fourSum(prices, target)); to print the result.
Practice
(1/5)
1. What is the main goal of the Four Sum Problem in data structures and algorithms?
easy
A. Find all unique quadruplets in an array that sum up to a target value
B. Sort the array in ascending order
C. Find the maximum element in the array
D. Count the number of pairs with a given sum
Solution
Step 1: Understand the problem statement
The Four Sum Problem asks us to find all unique groups of four numbers in an array that add up to a specific target sum.
Step 2: Differentiate from other problems
This is different from sorting, finding max, or counting pairs because it specifically looks for quadruplets with a sum equal to the target.
Final Answer:
Find all unique quadruplets in an array that sum up to a target value -> Option A
Quick Check:
Four Sum Problem = Find quadruplets summing to target [OK]
Hint: Look for four numbers adding to target, not sorting or max [OK]
Common Mistakes:
Confusing with sorting or max element problems
Looking for pairs instead of quadruplets
Ignoring uniqueness of quadruplets
2. Which of the following is the correct way to start sorting an array nums in JavaScript before solving the Four Sum Problem?
easy
A. nums.sort()
B. nums.sort((a, b) => b - a)
C. nums.sorted()
D. nums.sort((a, b) => a - b)
Solution
Step 1: Understand JavaScript sort behavior
By default, nums.sort() sorts elements as strings, which can give wrong order for numbers.
Step 2: Use numeric comparison function
Using nums.sort((a, b) => a - b) sorts numbers in ascending order correctly, which is needed for the Four Sum algorithm.
Final Answer:
nums.sort((a, b) => a - b) -> Option D
Quick Check:
Numeric ascending sort = nums.sort((a, b) => a - b) [OK]
Hint: Use numeric compare function for sorting numbers [OK]
Common Mistakes:
Using default sort without compare function
Using descending order when ascending is needed
Using non-existent method like sorted()
3. What will be the output of the following code snippet?
const nums = [1, 0, -1, 0, -2, 2];
const target = 0;
// Assume findFourSum returns all unique quadruplets summing to target
const result = findFourSum(nums, target);
console.log(result);
Given findFourSum correctly implements the Four Sum algorithm, what is the expected output?
medium
A. [[-2, -1, 1, 2], [-2, 0, 0, 2], [-1, 0, 0, 1]]
B. [[1, 0, -1, 0], [-2, 2, 0, 0]]
C. [[-2, -1, 0, 1], [-1, 0, 0, 1]]
D. [[0, 0, 0, 0]]
Solution
Step 1: Sort the array and find quadruplets
Sorted array is [-2, -1, 0, 0, 1, 2]. The unique quadruplets summing to 0 are [-2, -1, 1, 2], [-2, 0, 0, 2], and [-1, 0, 0, 1].
Step 2: Verify quadruplets sum to target
Each quadruplet sums to 0, matching the target, and all are unique sets.
Hint: Sort array first, then find quadruplets summing to target [OK]
Common Mistakes:
Not sorting array before processing
Including duplicate quadruplets
Incorrect quadruplet sums
4. Identify the error in the following snippet for solving the Four Sum Problem:
function fourSum(nums, target) {
nums.sort();
const quadruplets = [];
for (let i = 0; i < nums.length - 3; i++) {
for (let j = i + 1; j < nums.length - 2; j++) {
let left = j + 1;
let right = nums.length - 1;
while (left < right) {
const sum = nums[i] + nums[j] + nums[left] + nums[right];
if (sum === target) {
quadruplets.push([nums[i], nums[j], nums[left], nums[right]]);
left++;
right--;
} else if (sum < target) {
left++;
} else {
right--;
}
}
}
}
return quadruplets;
}
medium
A. The loops do not cover all indices correctly
B. The array is not sorted numerically before processing
C. The quadruplets array is not returned
D. The sum calculation is incorrect
Solution
Step 1: Check sorting method
The code uses nums.sort() without a compare function, which sorts elements as strings, causing incorrect order for numbers.
Step 2: Impact on algorithm correctness
Incorrect sorting leads to wrong quadruplets or missed solutions because the two-pointer approach depends on sorted numeric order.
Final Answer:
The array is not sorted numerically before processing -> Option B
Quick Check:
Missing numeric sort compare function = The array is not sorted numerically before processing [OK]
Hint: Always use numeric compare in sort for number arrays [OK]
Common Mistakes:
Using default sort without compare function
Not returning the result array
Incorrect loop ranges (not here though)
Wrong sum calculation (correct here)
5. Given an array nums = [2, 2, 2, 2, 2] and target = 8, what is the correct output of the Four Sum Problem algorithm that finds all unique quadruplets?
hard
A. [[2, 2, 2]]
B. [[2, 2, 2, 2], [2, 2, 2, 2]]
C. [[2, 2, 2, 2]]
D. []
Solution
Step 1: Understand the input and target
All elements are 2, and target is 8. Four 2's sum to 8 exactly.
Step 2: Identify unique quadruplets
Even though there are multiple 2's, only one unique quadruplet [2, 2, 2, 2] exists that sums to 8.