In Rust, vectors are created using vec![elements], which allows dynamic sizing.
Step 2: Compare options
Only let coins = vec![1, 2, 5]; uses the vec! macro correctly. let coins = [1, 2, 5]; creates an array with fixed size. let coins = (1, 2, 5); creates a tuple. let coins = {1, 2, 5}; has invalid syntax.
Final Answer:
let coins = vec![1, 2, 5]; -> Option C
Quick Check:
vec! macro creates vector [OK]
Hint: Use vec![...] to create dynamic coin lists [OK]
Common Mistakes:
Using tuple or array instead of vector
Using curly braces which are invalid here
Forgetting the vec! macro
3. What is the output of the following Rust code snippet for minimum coins to make amount 11 with coins [1, 2, 5]?
fn min_coins(coins: &[i32], amount: i32) -> i32 {
let mut dp = vec![amount + 1; (amount + 1) as usize];
dp[0] = 0;
for i in 1..=amount {
for &coin in coins {
if coin <= i {
dp[i as usize] = dp[i as usize].min(dp[(i - coin) as usize] + 1);
}
}
}
if dp[amount as usize] > amount { -1 } else { dp[amount as usize] }
}
fn main() {
let coins = vec![1, 2, 5];
println!("{}", min_coins(&coins, 11));
}
medium
A. 5
B. 3
C. 4
D. -1
Solution
Step 1: Understand the dynamic programming array dp
dp[i] stores minimum coins needed for amount i. Initialized with amount+1 (impossible high value), dp[0]=0.
Step 2: Trace dp updates for amount 11
Using coins 1,2,5, minimum coins for 11 is 3 (5+5+1). The code finds dp[11] = 3.
Final Answer:
3 -> Option B
Quick Check:
11 = 5+5+1 uses 3 coins [OK]
Hint: Check dp array for minimum coins at target amount [OK]
Common Mistakes:
Confusing dp index with coin values
Not initializing dp[0] to zero
Returning amount instead of -1 when no solution
4. Identify the bug in this Rust function for minimum coins:
fn min_coins(coins: &[i32], amount: i32) -> i32 {
let mut dp = vec![0; (amount + 1) as usize];
for i in 1..=amount {
dp[i as usize] = i;
for &coin in coins {
if coin <= i {
dp[i as usize] = dp[i as usize].min(dp[(i - coin) as usize] + 1);
}
}
}
dp[amount as usize]
}
medium
A. Loop range should start from 0, not 1
B. Coins vector should be mutable
C. Missing return statement
D. dp vector initialized with zeros instead of large values
Solution
Step 1: Check dp initialization
dp is initialized with zeros, which causes min comparisons to fail because 0 is less than any valid coin count.
Step 2: Correct initialization
dp should be initialized with a large value (like amount+1) to represent impossible states, allowing min to work correctly.
Final Answer:
dp vector initialized with zeros instead of large values -> Option D
Quick Check:
dp init affects min logic [OK]
Hint: Initialize dp with large values, not zeros [OK]
Common Mistakes:
Starting loop at 0 instead of 1
Forgetting to return dp[amount]
Making coins mutable unnecessarily
5. Given coin denominations [1, 3, 4] and amount 6, what is the minimum number of coins needed? Use the coin change minimum coins approach.
hard
A. 2
B. 3
C. 4
D. -1
Solution
Step 1: Analyze possible combinations for amount 6
Using coins 1,3,4, possible sums: 3+3=6 (2 coins), 4+1+1=6 (3 coins), 1+1+1+1+1+1=6 (6 coins).
Step 2: Find minimum coins
The minimum coins needed is 2 (two 3-value coins).
Final Answer:
2 -> Option A
Quick Check:
6 = 3+3 uses 2 coins [OK]
Hint: Try largest coins first to minimize count [OK]
Common Mistakes:
Choosing 4+1+1 instead of 3+3
Assuming no solution exists
Counting coins incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.