Shortest Path in a Grid with Obstacles Elimination - Problem

You are given an m x n integer matrix grid where each cell is either 0 (empty) or 1 (obstacle). You can move up, down, left, or right from and to an empty cell in one step.

Return the minimum number of steps to walk from the upper left corner (0, 0) to the lower right corner (m - 1, n - 1) given that you can eliminate at most k obstacles.

If it is not possible to find such walk, return -1.

Input & Output

Example 1 — Basic Elimination
$ Input: grid = [[0,1,1],[1,1,1],[1,0,0]], k = 1
Output: 4
💡 Note: Shortest path: (0,0) → (1,0) eliminate obstacle → (2,0) → (2,1) → (2,2) in 4 steps
Example 2 — No Elimination Needed
$ Input: grid = [[0,0,0],[1,1,0],[0,0,0]], k = 1
Output: 4
💡 Note: Path without elimination needed: (0,0) → (0,1) → (0,2) → (1,2) → (2,2) in 4 steps
Example 3 — Impossible Case
$ Input: grid = [[0,1,1],[1,1,1],[1,1,0]], k = 1
Output: -1
💡 Note: Need to eliminate multiple obstacles to reach destination, but k=1 allows only one elimination

Constraints

  • m == grid.length
  • n == grid[i].length
  • 1 ≤ m, n ≤ 40
  • 1 ≤ k ≤ m × n
  • grid[i][j] is either 0 or 1
  • grid[0][0] == grid[m-1][n-1] == 0

Visualization

Tap to expand
Shortest Path with Obstacles Elimination INPUT Grid (3x3): 0 START 1 1 1 1 1 1 0 0 END Empty (0) Obstacle (1) Parameters: grid = [[0,1,1], [1,1,1], [1,0,0]] k = 1 (max eliminations) ALGORITHM (BFS) 1 Initialize BFS State: (row, col, remaining_k) Start: (0, 0, k=1), steps=0 2 Process Queue For each cell, try 4 directions Track visited with (x,y,k) state 3 Handle Obstacles If obstacle and k > 0: Eliminate it (k = k - 1) 4 Check Target When reaching (m-1, n-1) Return current steps count BFS Queue States: (0,0,1) --> (0,1,0) --> (0,2,-) | | (1,0,0) --> (1,1,-) --> (1,2,-) | | (2,0,-) --> (2,1,0) --> (2,2,0) [OK] FINAL RESULT Optimal Path Found: S X 1 2 3 4 1 5 E Path taken Eliminated OUTPUT 6 Minimum steps to reach (2,2) with 1 elimination Key Insight: Standard BFS finds shortest path, but we need 3D state: (row, col, remaining_eliminations). Same cell can be visited multiple times with different k values. This ensures we explore all possible paths while tracking obstacle elimination budget. Time: O(m*n*k), Space: O(m*n*k). TutorialsPoint - Shortest Path in a Grid with Obstacles Elimination | BFS Approach
Asked in
Google 15 Facebook 12 Amazon 8
34.5K Views
Medium Frequency
~25 min Avg. Time
890 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen