3 solutions
-
0
题面描述
在一个 的 0-1 矩阵中,我们需要从第一列的任意一个 1 出发,找到到达最后一列任意一个 1 的最少步数。如果无法到达,则输出 -1。输入的第一行为两个整数 和 ,接下来是 行,每行包含 个数,数值为 0 或 1。输出应为最短步数。
思路:多源BFS
多源BFS模板题:LeetCode 542. 01 矩阵
本题可以把第一列的所有元素为1的位置作为起点,将最后一列所有元素为1的位置作为终点,求起点到终点的最短距离,即为多源BFS
具体步骤:
- 初始化起点:将第一列中所有值为 1 的位置作为起点,加入队列中。
- BFS遍历:从队列中逐个取出节点,探索四个方向(上下左右),如果发现相邻位置的值为 1 且未被访问过,就将该位置加入队列并标记为已访问。
- 终止条件:当遍历到最后一列时,输出当前步数。
- 无解情况:如果队列为空仍未到达最后一列,输出 -1。
时间复杂度
代码
C++
python代码
Java代码
- 1
Information
- ID
- 56
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 4
- Tags
- # Submissions
- 305
- Accepted
- 74
- Uploaded By