”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 网格中访问单元格的最短时间

网格中访问单元格的最短时间

发布于2025-03-28
浏览:800

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

Minimum Time to Visit a Cell In a Grid

grid = [[0,2,4],[3,2,1],[1,0,4]]
  • [2 说明:
  • 从左上角到底部的单元格。
  • [2
  • m == grid.length
  • n == grid [i] .length
      2
  • 4 sup> 5
  • 0 sup> 5
  • grid [0] [0] == 0
  • 暗示:
  • 尝试使用一些可以在图上找到最短路径的算法。
  • 考虑必须在矩阵的两个单元格之间来回移动以解锁其他一些单元格的情况。
解决方案:

我们可以使用[优先Queue

dijkstra的算法

的修改版本。这个问题本质上要求我们找到访问左上角小区右下右键所需的最短时间,在该单元中,每个举动都根据网格中的值都有时间约束。 Minimum Time to Visit a Cell In a Grid 方法:

  • 图表示:将网格中的每个单元格视为节点。边缘是您可以移动到的相邻单元格(向上,向下,左,右)。 优先队列(min-heap)
  • :使用优先队列始终以最少的时间探索单元格。这样可以确保我们按照最早的时间来处理细胞。
  • 修改BFS :对于每个单元格,我们将检查是否可以移动到其相邻的单元格,并更新我们可以访问它们的时间。如果在以后的时间比当前访问了一个单元格,我们将其添加到新的时间中。早期出口
  • 让我们在PHP中实现此解决方案: 2577。在网格
中访问单元格的最小时间

解释:
  • [2 Splpriorityqueue用于确保首先处理具有最短时间的细胞。优先级存储为-Time,因为PHP的splpriorityqueue默认情况下是最大的。 [2 从左上角的单元格(0,0)开始,考虑到每个可访问的最早时间(Max(0,Grid [NewRow] [NewCol] [NewCol] - (时间1)))。 [2 访问的数组跟踪已经处理的单元格,以避免冗余计算和无限循环。 [2 该算法确保我们保持在网格的范围内,并且仅处理有效的邻居。 [2 每一个动作都需要一秒钟,如果单元格需要等待(即网格[newrow] [newcol]>时间1),则算法等到所需的时间。 [2 如果队列耗尽并且未达到右下方单元格,则函数返回-1。
  • 复杂性分析
  • [2
  • Each cell is added to the priority queue at most once:
  • O(m x n x log(m x n))
, where

m

and
  1. n
  2. are the grid dimensions.

[2

The space for the priority queue and the visited array is

O(m x n).

  1. 示例运行

    输入:

    $ grid = [ [0,1,3,2], [5,1,2,5], [4,3,8,6] ]; 回声最小时间($网格); //输出:7
  2. 输入:

    $ grid = [ [0,2,4], [3,2,1], [1,0,4] ]; 回声最小时间($网格); //输出:-1

    此解决方案效率很高,并且在约束中效果很好。
  3. [2
  4. 如果您发现此系列有帮助,请考虑在Github上给

    如果您想要这样的更多有用的内容,请随时关注我:

    [2 [2
版本声明 本文转载于:https://dev.to/mdarifulhaque/2577-minimum-time-to-visit-a-cell-in-a-grid-3eg5?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何有效地选择熊猫数据框中的列?
    如何有效地选择熊猫数据框中的列?
    在处理数据操作任务时,在Pandas DataFrames 中选择列时,选择特定列的必要条件是必要的。在Pandas中,选择列的各种选项。选项1:使用列名 如果已知列索引,请使用ILOC函数选择它们。请注意,python索引基于零。 df1 = df.iloc [:,0:2]#使用索引0和1 c...
    编程 发布于2025-04-04
  • 如何正确使用与PDO参数的查询一样?
    如何正确使用与PDO参数的查询一样?
    在pdo 中使用类似QUERIES在PDO中的Queries时,您可能会遇到类似疑问中描述的问题:此查询也可能不会返回结果,即使$ var1和$ var2包含有效的搜索词。错误在于不正确包含%符号。通过将变量包含在$ params数组中的%符号中,您确保将%字符正确替换到查询中。没有此修改,PDO...
    编程 发布于2025-04-04
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-04-04
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-04-04
  • 如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    将pandas dataframe列转换为dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定义格式:})指定的格式参数匹配给定的字符串格式。转换后,MyCol列现在将包含DateTime对象。基于date filtering > = pd.to_...
    编程 发布于2025-04-04
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。要简化过程,建议将JSON作为数组而不是对象解析。执行此操作,将JSON_DECODE函数与第二个参数设置为true:[&&&&& && &&&&& json = JSON = JSON_DECODE($ j...
    编程 发布于2025-04-04
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-04-04
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 中,如果您使用一个大文件,并且需要从最后一行读取其内容,则在第一行到第一行,Python的内置功能可能不合适。这是解决此任务的有效解决方案:反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] ...
    编程 发布于2025-04-04
  • 在GO中构造SQL查询时,如何安全地加入文本和值?
    在GO中构造SQL查询时,如何安全地加入文本和值?
    在go中构造文本sql查询时,在go sql queries 中,在使用conting and contement和contement consem per时,尤其是在使用integer per当per当per时,per per per当per. [&​​&&&&&&&&&&&&&&&默元组方法在...
    编程 发布于2025-04-04
  • 在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在C中的显式删除 在C中的动态内存分配时,开发人员通常会想知道是否需要手动调用“ delete”操作员在heap-exprogal exit exit上。本文深入研究了这个主题。 在C主函数中,使用了动态分配变量(HEAP内存)的指针。当应用程序退出时,此内存是否会自动发布?通常,是。但是,即使在这...
    编程 发布于2025-04-04
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-04-04
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-04-04
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-04-04
  • 为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    Class 'ZipArchive' Not Found Error While Installing Archive_Zip on Linux ServerSymptom:When attempting to run a script that utilizes the ZipAr...
    编程 发布于2025-04-04
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-04-04

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3