Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

Coin Change Minimum Coins in DSA Typescript - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to initialize the dp array with a large number.

DSA Typescript
const dp: number[] = new Array(amount + 1).fill([1]);
Drag options to blanks, or click blank then click option'
Aamount
BInfinity
C-1
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using 0 will incorrectly suggest the amount can be formed without coins.
Using -1 is not suitable for minimum calculations.
Using amount does not represent an impossible state clearly.
2fill in blank
medium

Complete the code to set the base case for amount 0.

DSA Typescript
dp[0] = [1];
Drag options to blanks, or click blank then click option'
A0
Bamount
CInfinity
D-1
Attempts:
3 left
💡 Hint
Common Mistakes
Setting dp[0] to Infinity or -1 causes incorrect results.
Setting dp[0] to amount is incorrect.
3fill in blank
hard

Fix the error in the inner loop condition to avoid invalid indices.

DSA Typescript
for (let coin of coins) {
  if (i [1] coin) {
    dp[i] = Math.min(dp[i], dp[i - coin] + 1);
  }
}
Drag options to blanks, or click blank then click option'
A>=
B>
C<=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<=' or '>' causes index errors or skips valid cases.
4fill in blank
hard

Fill both blanks to complete the function that returns the minimum coins or -1 if not possible.

DSA Typescript
function coinChange(coins: number[], amount: number): number {
  const dp: number[] = new Array(amount + 1).fill(Infinity);
  dp[0] = 0;
  for (let i = 1; i <= amount; i++) {
    for (let coin of coins) {
      if (i [1] coin) {
        dp[i] = Math.min(dp[i], dp[i - coin] + 1);
      }
    }
  }
  return dp[amount] === [2] ? -1 : dp[amount];
}
Drag options to blanks, or click blank then click option'
A>=
BInfinity
C<=
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<=' instead of '>=' causes wrong index access.
Comparing dp[amount] to 0 instead of Infinity causes wrong return.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps each coin to its count in the minimum coin combination.

DSA Typescript
function coinCount(coins: number[], amount: number): Record<number, number> {
  const dp: number[] = new Array(amount + 1).fill(Infinity);
  const count: number[] = new Array(amount + 1).fill(0);
  dp[0] = 0;
  for (let i = 1; i <= amount; i++) {
    for (let coin of coins) {
      if (i [1] coin && dp[i] > dp[i - coin] + 1) {
        dp[i] = dp[i - coin] + 1;
        count[i] = coin;
      }
    }
  }
  if (dp[amount] === Infinity) return {};
  const result: Record<number, number> = {};
  let current = amount;
  while (current [3] 0) {
    const c = count[current];
    result[c] = (result[c] || 0) + 1;
    current = current [2] c;
  }
  return result;
}
Drag options to blanks, or click blank then click option'
A>=
B-=
C>
D+=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<=' or '>=' in the if condition causes wrong updates.
Using '+=' instead of '-=' in backtracking causes infinite loop.

Practice

(1/5)
1. What does the "Coin Change Minimum Coins" problem ask you to find?
easy
A. The maximum amount of money you can make with given coins
B. The total number of different coins available
C. The least number of coins needed to make a given amount
D. The sum of all coin values

Solution

  1. Step 1: Understand the problem goal

    The problem asks for the minimum number of coins needed to make a specific amount.
  2. Step 2: Differentiate from other coin problems

    It is not about counting coins or maximum amount, but minimizing coin count for exact amount.
  3. Final Answer:

    The least number of coins needed to make a given amount -> Option C
  4. Quick Check:

    Minimum coins = least number needed [OK]
Hint: Focus on minimum coins to form amount, not total coins [OK]
Common Mistakes:
  • Confusing minimum coins with total coin types
  • Thinking problem asks for maximum amount
  • Ignoring the exact amount requirement
2. Which of the following is the correct TypeScript function signature for a coin change minimum coins function?
easy
A. function minCoins(coins: number[], amount: number): number
B. function minCoins(amount: number, coins: number[]): void
C. function minCoins(coins: number, amount: number[]): number[]
D. function minCoins(coins: string[], amount: string): number

Solution

  1. Step 1: Check parameter types and order

    The function should take an array of coin values (number[]) and an amount (number).
  2. Step 2: Check return type

    The function returns a number representing minimum coins needed.
  3. Final Answer:

    function minCoins(coins: number[], amount: number): number -> Option A
  4. Quick Check:

    Correct types and return number [OK]
Hint: Coins array first, amount second, returns number [OK]
Common Mistakes:
  • Swapping parameter order
  • Using wrong types like string instead of number
  • Returning void or array instead of number
3. What is the output of the following TypeScript code?
function minCoins(coins: number[], amount: number): number {
  const dp = Array(amount + 1).fill(amount + 1);
  dp[0] = 0;
  for (let i = 1; i <= amount; i++) {
    for (const coin of coins) {
      if (coin <= i) {
        dp[i] = Math.min(dp[i], dp[i - coin] + 1);
      }
    }
  }
  return dp[amount] > amount ? -1 : dp[amount];
}

console.log(minCoins([1, 2, 5], 11));
medium
A. 2
B. 3
C. -1
D. 5

Solution

  1. Step 1: Understand dp array initialization

    dp array size is 12 (0 to 11), initialized with 12 (amount+1), dp[0] = 0.
  2. Step 2: Calculate dp values for amount 11

    Using coins 1,2,5, minimum coins for 11 is 3 (5+5+1).
  3. Final Answer:

    3 -> Option B
  4. Quick Check:

    Minimum coins for 11 with [1,2,5] = 3 [OK]
Hint: Use dp array to track min coins for each amount [OK]
Common Mistakes:
  • Returning dp[amount] without checking if > amount
  • Misunderstanding dp initialization
  • Confusing coin values and indices
4. Identify the bug in this TypeScript code for minimum coins:
function minCoins(coins: number[], amount: number): number {
  const dp = new Array(amount + 1).fill(0);
  dp[0] = 0;
  for (let i = 1; i <= amount; i++) {
    dp[i] = Infinity;
    for (const coin of coins) {
      if (coin < i) {
        dp[i] = Math.min(dp[i], dp[i - coin] + 1);
      }
    }
  }
  return dp[amount] === Infinity ? -1 : dp[amount];
}
medium
A. The condition should be coin <= i, not coin < i
B. dp array should be initialized with Infinity, not 0
C. dp[0] should be Infinity, not 0
D. Return statement should check dp[amount] > Infinity

Solution

  1. Step 1: Check coin usage condition

    The condition 'coin < i' skips cases where coin equals i, missing exact matches.
  2. Step 2: Correct condition to include equal coins

    Change condition to 'coin <= i' to allow using coin equal to current amount.
  3. Final Answer:

    The condition should be coin <= i, not coin < i -> Option A
  4. Quick Check:

    Include coin equal to amount [OK]
Hint: Use <= to include exact coin matches [OK]
Common Mistakes:
  • Using < instead of <= in coin check
  • Initializing dp array incorrectly
  • Wrong return condition check
5. Given coins = [2, 3, 7] and amount = 13, what is the minimum number of coins needed? Use the coin change minimum coins approach.
hard
A. -1
B. 4
C. 2
D. 3

Solution

  1. Step 1: Try combinations to form 13

    Possible combos: 7+3+3 = 3 coins, 2+2+2+7 = 4 coins, etc.
  2. Step 2: Identify minimum coins

    Minimum coins is 3 using 7, 3, and 3.
  3. Final Answer:

    3 -> Option D
  4. Quick Check:

    7+3+3 = 13 with 3 coins [OK]
Hint: Try largest coins first to minimize count [OK]
Common Mistakes:
  • Assuming no solution (-1) without checking combos
  • Counting coins incorrectly
  • Ignoring combinations with repeated coins
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