Hint: Unique Paths count moves right/down only [OK]
Common Mistakes:
Confusing unique paths with shortest path
Thinking about obstacles instead of paths
Mixing path count with path sum
2. Which of the following Java code snippets correctly initializes a 2D DP array dp for a grid of size m x n?
easy
A. int[][] dp = new int[m][n];
B. int dp[][] = new int[n][m];
C. int dp = new int[m][n];
D. int[][] dp = new int[m];
Solution
Step 1: Recall Java 2D array syntax
In Java, a 2D array is declared as int[][] dp = new int[m][n]; where m is rows and n is columns.
Step 2: Check each option
int[][] dp = new int[m][n]; matches correct syntax. int dp[][] = new int[n][m]; swaps dimensions. int dp = new int[m][n]; uses wrong type. int[][] dp = new int[m]; misses second dimension.
Final Answer:
int[][] dp = new int[m][n]; -> Option A
Quick Check:
Java 2D array = int[][] dp = new int[m][n] [OK]
Hint: Use int[][] dp = new int[m][n] for 2D arrays [OK]
Common Mistakes:
Swapping row and column sizes
Missing second dimension in array creation
Using single brackets for 2D arrays
3. What is the output of the following Java code snippet for m = 3 and n = 3?
int m = 3, n = 3;
int[][] dp = new int[m][n];
for (int i = 0; i < m; i++) dp[i][0] = 1;
for (int j = 0; j < n; j++) dp[0][j] = 1;
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
System.out.println(dp[m-1][n-1]);
medium
A. 3
B. 10
C. 6
D. 1
Solution
Step 1: Initialize first row and column
First row and first column are set to 1, representing only one way to reach those cells.
Step 2: Fill dp table using sum of top and left cells
dp[2][2] = 6 is incorrect for 3x3 grid unique paths. The correct number of unique paths in a 3x3 grid is 6, but let's verify carefully: Actually, the number of unique paths from top-left to bottom-right in a 3x3 grid moving only right or down is 6. Let's trace the dp table: Row 0: [1,1,1] Row 1: [1,2,3] Row 2: [1,3,6] So dp[2][2] = 6 is correct.
Final Answer:
6 -> Option C
Quick Check:
Unique paths in 3x3 grid = 6 [OK]
Hint: Sum ways from top and left cells to fill dp [OK]
Common Mistakes:
Not initializing first row and column to 1
Adding dp[i][j-1] and dp[i-1][j] incorrectly
Off-by-one errors in loops
4. Identify the bug in the following Java code for computing unique paths in an m x n grid:
int[][] dp = new int[m][n];
for (int i = 0; i <= m; i++) dp[i][0] = 1;
for (int j = 0; j <= n; j++) dp[0][j] = 1;
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
medium
A. Loops use <= causing ArrayIndexOutOfBoundsException
B. dp array is not initialized
C. Sum formula is incorrect
D. No bug, code is correct
Solution
Step 1: Check loop boundaries for dp array
Arrays in Java are 0-indexed, so valid indices are 0 to m-1 and 0 to n-1. Using <= m or <= n causes index out of bounds.
Step 2: Identify the error cause
Loops with condition i <= m and j <= n try to access dp[m][0] or dp[0][n], which do not exist.
Final Answer:
Loops use <= causing ArrayIndexOutOfBoundsException -> Option A
Quick Check:
Array indices must be less than size [OK]
Hint: Use < not <= for array indices in loops [OK]
Common Mistakes:
Using <= instead of < in loops
Ignoring zero-based indexing
Assuming array size includes upper bound index
5. Given a grid with obstacles represented by 1s and empty spaces by 0s, how would you modify the Unique Paths DP solution to count paths avoiding obstacles? Choose the correct approach:
hard
A. Use recursion without memoization to handle obstacles
B. Set dp[i][j] = 0 if grid[i][j] == 1; else dp[i][j] = dp[i-1][j] + dp[i][j-1], Initialize dp[0][0] = 1 if no obstacle, Handle first row and column carefully considering obstacles
C. Set dp[i][j] = 1 if grid[i][j] == 1; else 0, Sum all dp values at the end
D. Ignore obstacles and calculate paths normally, Obstacles don't affect path count
Solution
Step 1: Understand obstacle effect on paths
If a cell has an obstacle, no path can go through it, so dp value must be 0.
Step 2: Modify DP formula and initialization
Set dp[i][j] = 0 if obstacle; else sum of dp from top and left. Initialize dp[0][0] = 1 only if no obstacle. First row and column must consider obstacles to stop paths beyond them.
Final Answer:
Set dp[i][j] = 0 if grid[i][j] == 1; else dp[i][j] = dp[i-1][j] + dp[i][j-1], Initialize dp[0][0] = 1 if no obstacle, Handle first row and column carefully considering obstacles -> Option B
Quick Check:
Obstacles block paths, dp=0 there [OK]
Hint: Set dp=0 for obstacles, sum neighbors otherwise [OK]
Common Mistakes:
Ignoring obstacles in dp calculation
Not initializing dp[0][0] correctly
Not stopping path count after obstacle in first row/column
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.