1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/找出最安全路径 [find-the-safest-path-in-a-grid].html
2023-08-11 23:36:00 +08:00

60 lines
3.2 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给你一个下标从 <strong>0</strong> 开始、大小为 <code>n x n</code> 的二维矩阵 <code>grid</code> ,其中 <code>(r, c)</code> 表示:</p>
<ul>
<li>如果 <code>grid[r][c] = 1</code> ,则表示一个存在小偷的单元格</li>
<li>如果 <code>grid[r][c] = 0</code> ,则表示一个空单元格</li>
</ul>
<p>你最开始位于单元格 <code>(0, 0)</code> 。在一步移动中,你可以移动到矩阵中的任一相邻单元格,包括存在小偷的单元格。</p>
<p>矩阵中路径的 <strong>安全系数</strong> 定义为:从路径中任一单元格到矩阵中任一小偷所在单元格的 <strong>最小</strong> 曼哈顿距离。</p>
<p>返回所有通向单元格<em> </em><code>(n - 1, n - 1)</code> 的路径中的 <strong>最大安全系数</strong></p>
<p>单元格 <code>(r, c)</code> 的某个 <strong>相邻</strong> 单元格,是指在矩阵中存在的 <code>(r, c + 1)</code><code>(r, c - 1)</code><code>(r + 1, c)</code><code>(r - 1, c)</code> 之一。</p>
<p>两个单元格 <code>(a, b)</code><code>(x, y)</code> 之间的 <strong>曼哈顿距离</strong> 等于 <code>| a - x | + | b - y |</code> ,其中 <code>|val|</code> 表示 <code>val</code> 的绝对值。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2023/07/02/example1.png" style="width: 362px; height: 242px;" />
<pre>
<strong>输入:</strong>grid = [[1,0,0],[0,0,0],[0,0,1]]
<strong>输出:</strong>0
<strong>解释:</strong>从 (0, 0) 到 (n - 1, n - 1) 的每条路径都经过存在小偷的单元格 (0, 0) 和 (n - 1, n - 1) 。
</pre>
<p><strong>示例 2</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2023/07/02/example2.png" style="width: 362px; height: 242px;" />
<pre>
<strong>输入:</strong>grid = [[0,0,1],[0,0,0],[0,0,0]]
<strong>输出:</strong>2
<strong>解释:</strong>
上图所示路径的安全系数为 2
- 该路径上距离小偷所在单元格02最近的单元格是00。它们之间的曼哈顿距离为 | 0 - 0 | + | 0 - 2 | = 2 。
可以证明,不存在安全系数更高的其他路径。
</pre>
<p><strong>示例 3</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2023/07/02/example3.png" style="width: 362px; height: 242px;" />
<pre>
<strong>输入:</strong>grid = [[0,0,0,1],[0,0,0,0],[0,0,0,0],[1,0,0,0]]
<strong>输出:</strong>2
<strong>解释:</strong>
上图所示路径的安全系数为 2
- 该路径上距离小偷所在单元格03最近的单元格是12。它们之间的曼哈顿距离为 | 0 - 1 | + | 3 - 2 | = 2 。
- 该路径上距离小偷所在单元格30最近的单元格是32。它们之间的曼哈顿距离为 | 3 - 3 | + | 0 - 2 | = 2 。
可以证明,不存在安全系数更高的其他路径。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= grid.length == n &lt;= 400</code></li>
<li><code>grid[i].length == n</code></li>
<li><code>grid[i][j]</code><code>0</code><code>1</code></li>
<li><code>grid</code> 至少存在一个小偷</li>
</ul>