Bird
Raised Fist0
DSA Typescriptprogramming~20 mins

Partition Equal Subset Sum in DSA Typescript - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Partition Equal Subset Sum Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Partition Equal Subset Sum Check
What is the output of the following TypeScript code that checks if an array can be partitioned into two subsets with equal sum?
DSA Typescript
function canPartition(nums: number[]): boolean {
  const total = nums.reduce((a, b) => a + b, 0);
  if (total % 2 !== 0) return false;
  const target = total / 2;
  const dp = new Array(target + 1).fill(false);
  dp[0] = true;
  for (const num of nums) {
    for (let j = target; j >= num; j--) {
      dp[j] = dp[j] || dp[j - num];
    }
  }
  return dp[target];
}

console.log(canPartition([1, 5, 11, 5]));
Atrue
Bfalse
CTypeError
DSyntaxError
Attempts:
2 left
💡 Hint
Think about whether the total sum is even and if a subset sums to half the total.
❓ Predict Output
intermediate
2:00remaining
Result of Partition Check on Odd Sum Array
What will be the output of this code snippet checking partition possibility for an array with an odd total sum?
DSA Typescript
function canPartition(nums: number[]): boolean {
  const total = nums.reduce((a, b) => a + b, 0);
  if (total % 2 !== 0) return false;
  const target = total / 2;
  const dp = new Array(target + 1).fill(false);
  dp[0] = true;
  for (const num of nums) {
    for (let j = target; j >= num; j--) {
      dp[j] = dp[j] || dp[j - num];
    }
  }
  return dp[target];
}

console.log(canPartition([1, 2, 3, 5]));
Atrue
BReferenceError
CRangeError
Dfalse
Attempts:
2 left
💡 Hint
Check if the total sum is even or odd.
🧠 Conceptual
advanced
2:00remaining
Understanding the DP Array in Partition Equal Subset Sum
In the Partition Equal Subset Sum problem, what does the boolean array 'dp' represent during the dynamic programming process?
A'dp[j]' counts the number of subsets that sum to 'j'.
B'dp[j]' is true if a subset of the input array sums exactly to 'j', false otherwise.
C'dp[j]' stores the minimum number of elements needed to sum to 'j'.
D'dp[j]' is true if all subsets sum to 'j', false otherwise.
Attempts:
2 left
💡 Hint
Think about what the boolean values track in the subset sum problem.
🔧 Debug
advanced
2:00remaining
Identify the Bug in Partition Equal Subset Sum Implementation
What error will this code produce when run, and why?
DSA Typescript
function canPartition(nums: number[]): boolean {
  const total = nums.reduce((a, b) => a + b, 0);
  if (total % 2 !== 0) return false;
  const target = total / 2;
  const dp = new Array(target).fill(false);
  dp[0] = true;
  for (const num of nums) {
    for (let j = target; j >= num; j--) {
      dp[j] = dp[j] || dp[j - num];
    }
  }
  return dp[target];
}

console.log(canPartition([1, 2, 3, 4]));
AReferenceError: dp is not defined
BRangeError: Invalid array length
CTypeError: Cannot set property '0' of undefined
Dundefined (returns false)
Attempts:
2 left
💡 Hint
Check how the dp array is initialized and accessed.
🚀 Application
expert
3:00remaining
Maximum Subset Sum Less Than or Equal to Target
Given the Partition Equal Subset Sum problem, how would you modify the algorithm to find the maximum subset sum less than or equal to half the total sum if equal partition is not possible? Which option correctly describes the approach?
AUse the dp array to track all achievable sums and return the largest index 'j' where dp[j] is true and j <= target.
BSort the array and pick elements greedily until sum exceeds half the total sum.
CUse recursion without memoization to try all subsets and pick the maximum sum less than or equal to target.
DReturn the sum of all elements divided by two without checking subsets.
Attempts:
2 left
💡 Hint
Think about how the dp array can be used to find achievable sums.

Practice

(1/5)
1. What does the Partition Equal Subset Sum problem ask you to find?
easy
A. If the array can be split into two subsets with equal sums
B. If the array contains any duplicate elements
C. If the array is sorted in ascending order
D. If the array has an even number of elements

Solution

  1. Step 1: Understand the problem goal

    The problem asks whether the given array can be divided into two parts where the sum of elements in both parts is the same.
  2. Step 2: Clarify what is being checked

    It is not about duplicates, sorting, or count of elements, but about equal sum partitioning.
  3. Final Answer:

    If the array can be split into two subsets with equal sums -> Option A
  4. Quick Check:

    Partition Equal Subset Sum = Split into equal sum subsets [OK]
Hint: Focus on equal sum subsets, not element order or duplicates [OK]
Common Mistakes:
  • Thinking it checks for duplicates
  • Confusing with sorting problems
  • Assuming it checks array length parity
2. Which of the following TypeScript function signatures correctly represents a function to solve Partition Equal Subset Sum?
easy
A. function canPartition(nums: boolean[]): boolean
B. function canPartition(nums: string): number
C. function canPartition(nums: number): string
D. function canPartition(nums: number[]): boolean

Solution

  1. Step 1: Identify correct parameter type

    The input is an array of numbers, so nums: number[] is correct.
  2. Step 2: Identify correct return type

    The function returns true or false, so return type is boolean.
  3. Final Answer:

    function canPartition(nums: number[]): boolean -> Option D
  4. Quick Check:

    Input array of numbers, output boolean [OK]
Hint: Input is number array, output is boolean for yes/no [OK]
Common Mistakes:
  • Using wrong input type like string or boolean array
  • Returning number instead of boolean
  • Incorrect function signature syntax
3. What is the output of the following TypeScript code?
function canPartition(nums: number[]): boolean {
  const total = nums.reduce((a, b) => a + b, 0);
  if (total % 2 !== 0) return false;
  const target = total / 2;
  const dp = new Array(target + 1).fill(false);
  dp[0] = true;
  for (const num of nums) {
    for (let j = target; j >= num; j--) {
      dp[j] = dp[j] || dp[j - num];
    }
  }
  return dp[target];
}

console.log(canPartition([1, 5, 11, 5]));
medium
A. Runtime error
B. true
C. undefined
D. false

Solution

  1. Step 1: Calculate total sum and check parity

    The sum is 1+5+11+5 = 22, which is even, so continue.
  2. Step 2: Use dynamic programming to check subset sum

    The code checks if a subset sums to 11 (half of 22). The subset [11] or [5,5,1] sums to 11, so dp[11] becomes true.
  3. Final Answer:

    true -> Option B
  4. Quick Check:

    Sum even and subset exists = true [OK]
Hint: Check if half sum subset exists using dp array [OK]
Common Mistakes:
  • Not checking if total sum is even
  • Confusing dp array update direction
  • Assuming false because of large numbers
4. Find the bug in this TypeScript code for Partition Equal Subset Sum:
function canPartition(nums: number[]): boolean {
  const total = nums.reduce((a, b) => a + b);
  if (total % 2 !== 0) return false;
  const target = total / 2;
  const dp = new Array(target + 1).fill(false);
  dp[0] = true;
  for (const num of nums) {
    for (let j = num; j <= target; j++) {
      dp[j] = dp[j] || dp[j - num];
    }
  }
  return dp[target];
}
medium
A. Missing initial value in reduce causes error on empty array
B. dp array size is incorrect
C. Loop direction in inner for loop should be reversed
D. No bug, code is correct

Solution

  1. Step 1: Check reduce usage

    Reduce lacks initial value, but if array is non-empty, it works. Not the main bug.
  2. Step 2: Check inner loop direction

    The inner loop runs from num to target increasing, but it should run backward from target down to num to avoid using updated dp values in the same iteration.
  3. Final Answer:

    Loop direction in inner for loop should be reversed -> Option C
  4. Quick Check:

    Inner loop must go backward to avoid dp overwrite [OK]
Hint: Inner loop for dp must run backward to prevent reuse [OK]
Common Mistakes:
  • Not reversing inner loop causes wrong dp updates
  • Assuming reduce always needs initial value
  • Ignoring dp array size correctness
5. Given the array [2, 2, 3, 7], which of the following subsets can be one half of the partition if the array can be split into two equal sum subsets?
hard
A. [2, 2, 3]
B. [2, 3]
C. [5]
D. [3, 5]

Solution

  1. Step 1: Calculate total sum

    Sum = 2 + 2 + 3 + 7 = 14. Half sum = 7.
  2. Step 2: Find subset summing to 7

    Check each option:
    A: [2,3] = 5 ≠ 7
    B: [2,2,3] = 7 == 7
    C: [5] = 5 ≠ 7 (5 not in array)
    D: [3,5] = 8 ≠ 7 (5 not in array)
    B works, with remaining [7] also 7.
  3. Final Answer:

    [2, 2, 3] -> Option A
  4. Quick Check:

    Sum half is 7, B sums to 7 [OK]
Hint: Sum array, find subset with half sum [OK]
Common Mistakes:
  • Not calculating half sum correctly
  • Choosing subsets that don't sum to half
  • Ignoring that partition may not exist
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard