Home >Backend Development >PHP Tutorial >Minimum Cost to Make at Least One Valid Path in a Grid
1368. Minimum Cost to Make at Least One Valid Path in a Grid
Difficulty: Hard
Topics: Array, Breadth-First Search, Graph, Heap (Priority Queue), Matrix, Shortest Path
Given an m x n grid. Each cell of the grid has a sign pointing to the next cell you should visit if you are currently in this cell. The sign of grid[i][j] can be:
Notice that there could be some signs on the cells of the grid that point outside the grid.
You will initially start at the upper left cell (0, 0). A valid path in the grid is a path that starts from the upper left cell (0, 0) and ends at the bottom-right cell (m - 1, n - 1) following the signs on the grid. The valid path does not have to be the shortest.
You can modify the sign on a cell with cost = 1. You can modify the sign on a cell one time only.
Return the minimum cost to make the grid have at least one valid path.
Example 1:
Example 2:
Example 3:
Constraints:
Hint:
Solution:
We can use the 0-1 BFS approach. The idea is to traverse the grid using a deque (double-ended queue) where the cost of modifying the direction determines whether a cell is added to the front or back of the deque. The grid is treated as a graph where each cell has weighted edges based on whether its current direction matches the movement to its neighbors.
Let's implement this solution in PHP: 1368. Minimum Cost to Make at Least One Valid Path in a Grid
<?php /** * @param Integer[][] $grid * @return Integer */ function minCost($grid) { ... ... ... /** * go to ./solution.php */ } // Example Test Cases $Minimum Cost to Make at Least One Valid Path in a Grid = [[1,1,1,1],[2,2,2,2],[1,1,1,1],[2,2,2,2]]; echo minCost($Minimum Cost to Make at Least One Valid Path in a Grid) . "\n"; // Output: 3 $Minimum Cost to Make at Least One Valid Path in a Grid = [[1,1,3],[3,2,2],[1,1,4]]; echo minCost($Minimum Cost to Make at Least One Valid Path in a Grid) . "\n"; // Output: 0 $Minimum Cost to Make at Least One Valid Path in a Grid = [[1,2],[4,3]]; echo minCost($Minimum Cost to Make at Least One Valid Path in a Grid) . "\n"; // Output: 1 ?>
Direction Mapping: Each direction (1 for right, 2 for left, 3 for down, 4 for up) is mapped to an array of movement deltas [dx, dy].
0-1 BFS:
Distance Array: A 2D array $dist keeps track of the minimum cost to reach each cell. It is initialized with PHP_INT_MAX for all cells except the starting cell (0, 0).
Edge Weights:
Termination: The loop terminates once all cells have been processed. The result is the value in $dist[$m - 1][$n - 1], representing the minimum cost to reach the bottom-right corner.
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks ?. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me:
The above is the detailed content of Minimum Cost to Make at Least One Valid Path in a Grid. For more information, please follow other related articles on the PHP Chinese website!