2577。在网格中访问单元格的最小时间
[2给您一个M X n矩阵网格,由组成,其中grid [row] [col] [col] [col]代表最小的时间所需的时间才能访问单元格(行,col),这意味着您可以在访问小区(col,col,col,col,col)或等于时间的时间或等于col,或等于时间。
您站在0中的矩阵的top-left 相邻的单元格:向上,向上,向下,左,右。您所做的每一步都需要1秒钟。 返回
最小您可以访问矩阵的右下方单元格所需的时间。如果您无法访问右下角单元格,则返回-1 [2 [2 grid = [[0,1,3,2],[5,1,2,5],[4,3,8,6]]
7 说明:我们可以采取的路径之一是:
在t = 1时,我们移至单元格(0,1)。可能是因为网格[0] [1] 在t = 2时,我们移至单元格(1,1)。可能是因为网格[1] [1] 在t = 3时,我们移至单元格(1,2)。可能是因为网格[1] [2] 在t = 4时,我们转到单元格(1,1)。可能是因为网格[1] [1] 在t = 5时,我们移至单元格(1,2)。可能是因为网格[1] [2] 在t = 6时,我们转到单元格(1,3)。可能是因为网格[1] [3] 在t = 7时,我们移至单元格(2,3)。可能是因为网格[2] [3] 的最后时间是7。可以证明这是可能的最小时间。 [2 [2
我们可以使用[优先Queue 的
dijkstra的算法的修改版本。这个问题本质上要求我们找到访问左上角小区右下右键所需的最短时间,在该单元中,每个举动都根据网格中的值都有时间约束。
方法:
解释:
m
and[2
The space for the priority queue and the visited array isO(m x n).
输入:
$ grid = [ [0,1,3,2], [5,1,2,5], [4,3,8,6] ]; 回声最小时间($网格); //输出:7$ grid = [ [0,2,4], [3,2,1], [1,0,4] ]; 回声最小时间($网格); //输出:-1
此解决方案效率很高,并且在约束中效果很好。如果您想要这样的更多有用的内容,请随时关注我:
[2 [2免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3