📖 Scenario: Imagine you are helping a delivery robot find the easiest path through a city grid. Each cell in the grid has a cost representing how hard it is to cross. The robot can only move right or down. Your job is to help the robot find the path with the smallest total cost from the top-left corner to the bottom-right corner.
🎯 Goal: Build a program that calculates the minimum path sum in a grid by moving only right or down.
📋 What You'll Learn
Create a 2D array called grid with exact values
Create a variable called rows and set it to the number of rows in grid
Create a variable called cols and set it to the number of columns in grid
Use nested for loops with variables r and c to update grid with minimum path sums
Print the minimum path sum from the top-left to bottom-right cell
💡 Why This Matters
🌍 Real World
Finding the easiest or cheapest path through a grid is useful in robotics, GPS navigation, and game development.
💼 Career
Understanding grid traversal and dynamic programming is important for software engineers working on pathfinding algorithms and optimization problems.
Progress0 / 4 steps
1
Create the grid
Create a 2D array called grid with these exact values: [[1,3,1],[1,5,1],[4,2,1]]
DSA Typescript
Hint
Use const grid: number[][] = [[1,3,1],[1,5,1],[4,2,1]]; to create the grid.
2
Set rows and columns variables
Create a variable called rows and set it to the number of rows in grid. Then create a variable called cols and set it to the number of columns in grid.
DSA Typescript
Hint
Use const rows = grid.length; and const cols = grid[0].length;.
3
Calculate minimum path sums
Use nested for loops with variables r and c to update grid so each cell contains the minimum path sum to reach it from the top-left corner. Handle the first row and first column separately.
DSA Typescript
Hint
First update the first column by adding the cell above. Then update the first row by adding the cell to the left. Finally, update the rest by adding the minimum of the top or left cell.
4
Print the minimum path sum
Print the minimum path sum from the top-left to bottom-right cell by printing grid[rows - 1][cols - 1].
DSA Typescript
Hint
Print the value at the bottom-right corner of the grid using console.log(grid[rows - 1][cols - 1]);.
Practice
(1/5)
1. What does the "Minimum Path Sum in Grid" problem ask you to find? Given a grid of numbers, find the path from top-left to bottom-right with the smallest sum.
easy
A. The maximum number in the grid
B. The path with the smallest sum of numbers from top-left to bottom-right
C. The number of paths from top-left to bottom-right
D. The path with the largest sum of numbers from top-left to bottom-right
Solution
Step 1: Understand the problem goal
The problem asks to find a path from the top-left corner to the bottom-right corner of the grid that has the smallest sum of all numbers along the path.
Step 2: Clarify path movement
Movement is only allowed down or right at each step, so the path is constrained.
Final Answer:
The path with the smallest sum of numbers from top-left to bottom-right -> Option B
Quick Check:
Minimum path sum means smallest total sum [OK]
Hint: Look for smallest sum path from top-left to bottom-right [OK]
Common Mistakes:
Confusing minimum with maximum sum
Counting number of paths instead of sum
Ignoring movement constraints (only right/down)
2. Which TypeScript syntax correctly initializes a 2D array named grid with values [[1,2],[3,4]]?
easy
A. const grid = [1,2,3,4];
B. const grid = new Array(1,2,3,4);
C. const grid = [[1,2],[3,4]];
D. const grid = Array(2,2);
Solution
Step 1: Understand 2D array initialization
To create a 2D array with specific values, use nested arrays like [[1,2],[3,4]].
Step 2: Check each option
const grid = [[1,2],[3,4]]; correctly uses nested arrays. Options B and D create arrays but not nested with those values. const grid = [1,2,3,4]; is a flat array.
Final Answer:
const grid = [[1,2],[3,4]]; -> Option C
Quick Check:
Nested arrays create 2D arrays [OK]
Hint: Use nested brackets for 2D arrays in TypeScript [OK]
Common Mistakes:
Using flat arrays instead of nested arrays
Using Array constructor incorrectly
Confusing array length with array content
3. What is the minimum path sum for the grid below?
const grid = [
[1, 3, 1],
[1, 5, 1],
[4, 2, 1]
];
medium
A. 7
B. 8
C. 9
D. 10
Solution
Step 1: Trace possible paths and sums
Possible minimum path: 1 -> 3 -> 1 -> 1 -> 1 = 7 (wrong path, check carefully). Another path: 1 -> 1 -> 5 -> 1 -> 1 = 9. Correct minimum path is 1 -> 3 -> 1 -> 1 -> 1 = 7 is invalid because movement is only right/down. Let's check carefully: Path: (0,0)=1 -> (1,0)=1 -> (2,0)=4 -> (2,1)=2 -> (2,2)=1 sum=1+1+4+2+1=9 Path: (0,0)=1 -> (0,1)=3 -> (0,2)=1 -> (1,2)=1 -> (2,2)=1 sum=1+3+1+1+1=7 But movement only right/down, so path is valid. Check if any smaller sum exists.
Step 2: Confirm minimum sum
The minimum path sum is 8 by moving right, down, down, right. Path: (0,0)=1 -> (0,1)=3 -> (1,1)=5 -> (2,1)=2 -> (2,2)=1 sum=1+3+5+2+1=12 (too large) Try path: (0,0)=1 -> (1,0)=1 -> (1,1)=5 -> (1,2)=1 -> (2,2)=1 sum=1+1+5+1+1=9 Try path: (0,0)=1 -> (1,0)=1 -> (2,0)=4 -> (2,1)=2 -> (2,2)=1 sum=1+1+4+2+1=9 Try path: (0,0)=1 -> (0,1)=3 -> (0,2)=1 -> (1,2)=1 -> (2,2)=1 sum=1+3+1+1+1=7 (valid) So minimum sum is 7.
Final Answer:
7 -> Option A
Quick Check:
Sum of path 1->3->1->1->1 = 7 [OK]
Hint: Add numbers along right/down paths, pick smallest sum [OK]
Common Mistakes:
Adding numbers from invalid paths (not only right/down)
Forgetting to include starting cell value
Mixing row and column indices
4. Identify the error in this TypeScript function to find minimum path sum:
function minPathSum(grid: number[][]): number {
const m = grid.length;
const n = grid[0].length;
const dp = Array(m).fill(Array(n).fill(0));
dp[0][0] = grid[0][0];
for (let i = 1; i < m; i++) dp[i][0] = dp[i-1][0] + grid[i][0];
for (let j = 1; j < n; j++) dp[0][j] = dp[0][j-1] + grid[0][j];
for (let i = 1; i < m; i++) {
for (let j = 1; j < n; j++) {
dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + grid[i][j];
}
}
return dp[m-1][n-1];
}
medium
A. grid is not checked for empty input
B. Loop ranges are incorrect, should start from 0
C. Return statement returns wrong cell
D. dp array initialization shares references causing incorrect updates
Solution
Step 1: Analyze dp array initialization
Using Array(m).fill(Array(n).fill(0)) creates m references to the same inner array, so updating one row updates all rows.
Step 2: Understand impact on dp updates
Because all rows share the same array, dp updates overwrite each other, causing wrong results.