Bird
Raised Fist0
DSA Javaprogramming~5 mins

Unique Paths in Grid DP in DSA Java - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the problem statement of Unique Paths in Grid DP?
Find the number of unique ways to move from the top-left corner to the bottom-right corner of a grid, moving only down or right.
Click to reveal answer
beginner
What does the DP state represent in Unique Paths problem?
DP state dp[i][j] represents the number of unique paths to reach cell (i, j) from the start.
Click to reveal answer
intermediate
What is the recurrence relation for Unique Paths DP?
dp[i][j] = dp[i-1][j] + dp[i][j-1], meaning paths to current cell come from top and left cells.
Click to reveal answer
beginner
Why do we initialize the first row and first column with 1 in Unique Paths DP?
Because there is only one way to reach any cell in the first row (all right moves) or first column (all down moves).
Click to reveal answer
advanced
How does Unique Paths DP handle obstacles if added to the grid?
Cells with obstacles have dp value 0, blocking paths through them; dp values for other cells are computed normally skipping obstacles.
Click to reveal answer
In Unique Paths DP, what does dp[0][0] represent?
AStarting point with 1 path
BNo paths available
CNumber of obstacles
DNumber of rows
Which moves are allowed in the Unique Paths grid problem?
AUp and Left
BDown and Right
CUp and Right
DDown and Left
What is the time complexity of the DP solution for Unique Paths in an m x n grid?
AO(m * n)
BO(m + n)
CO(m^2 * n^2)
DO(1)
If dp[i][j] = 0 in Unique Paths with obstacles, what does it mean?
ACell has multiple paths
BCell is the start
CCell is unreachable or blocked
DCell is the destination
How do you compute dp[i][j] if the cell (i,j) is not blocked?
Adp[i][j] = dp[i][j]
Bdp[i][j] = dp[i+1][j] + dp[i][j+1]
Cdp[i][j] = max(dp[i-1][j], dp[i][j-1])
Ddp[i][j] = dp[i-1][j] + dp[i][j-1]
Explain how to use dynamic programming to find the number of unique paths in a grid.
Think about how paths build up from the start to each cell.
You got /4 concepts.
    Describe how obstacles affect the Unique Paths DP solution and how to handle them.
    Obstacles block paths, so dp values must reflect that.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the problem "Unique Paths in Grid DP" ask you to find?
      Unique Paths means:
      easy
      A. The maximum sum path from top-left to bottom-right in a grid
      B. The shortest path length from top-left to bottom-right in a grid
      C. The number of obstacles in the grid
      D. The number of ways to move from top-left to bottom-right in a grid moving only right or down

      Solution

      1. Step 1: Understand the problem statement

        The problem asks for counting all possible paths from the top-left corner to the bottom-right corner of a grid, moving only right or down.
      2. Step 2: Identify the correct interpretation

        Among the options, only counting the number of ways to move right or down matches the problem description.
      3. Final Answer:

        The number of ways to move from top-left to bottom-right in a grid moving only right or down -> Option D
      4. Quick Check:

        Unique Paths = Counting ways moving right/down [OK]
      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

      1. 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.
      2. 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.
      3. Final Answer:

        int[][] dp = new int[m][n]; -> Option A
      4. 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

      1. Step 1: Initialize first row and column

        First row and first column are set to 1, representing only one way to reach those cells.
      2. Step 2: Fill dp table using sum of top and left cells

        Calculate dp[1][1] = dp[0][1] + dp[1][0] = 1 + 1 = 2, dp[1][2] = dp[0][2] + dp[1][1] = 1 + 2 = 3, dp[2][1] = dp[1][1] + dp[2][0] = 2 + 1 = 3, dp[2][2] = dp[1][2] + dp[2][1] = 3 + 3 = 6.
      3. Step 3: Recalculate final cell

        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.
      4. Final Answer:

        6 -> Option C
      5. 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

      1. 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.
      2. 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.
      3. Final Answer:

        Loops use <= causing ArrayIndexOutOfBoundsException -> Option A
      4. 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

      1. 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.
      2. 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.
      3. 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
      4. 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 unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard