Java Program to Find Distance of Nearest Cell Having 1 in a Binary Matrix2025年3月29日 | 阅读 4 分钟 问题陈述给定一个二元矩阵(其中每个单元格只包含 0 或 1),任务是确定从 0 单元格到 1 单元格所需的最少移动次数。如果当前单元格已经是 1,则距离为 0。 我们的问题是为每个新的 0 单元格标记最近的 1 单元格的距离。给定问题可以通过一系列称为广度优先搜索 (BFS) 的算法轻松解决,因为 BFS 可以轻松解决非加权图中的最短路径问题。 问题解决方案我们得到了一个只包含二元值的矩阵,对于每个包含“0”的单元格,都需要找到与包含“1”的单元格的最短距离。此外,所呈现的信息可以很容易地可视化为图的形式,其中每个单元格对应一个节点,如果两个单元格是邻居,则它们之间存在连接。 目的是确定节点(值为 0 的单元格)到第一个值为 1 的节点(单元格)的整体距离。解决此问题的唯一方法是通过 BFS,它是最合适的方法。 BFS 在节点级别工作,并且可以证明在 BFS 中,我们第一次从包含 0 的单元格遍历到包含 1 的单元格时,我们就找到了最短路径的长度。 解决问题的步骤
让我们在 Java 程序中实现上述步骤。 文件名:NearestCellWithOne.java 输出 Input Binary Matrix: 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 Distance Matrix: 2 1 1 0 1 0 1 1 0 1 1 2 1 1 0 1 时间复杂度和空间复杂度每个单元格仅处理一次,并且每个相邻单元格仅考虑一次。因此,时间复杂度为O(R × C),其中 R 是矩阵的行数,C 是列数。 所需的空间为O(R × C),用于存储结果矩阵和队列。 结论它利用 BFS 结果,通过分层节点遍历有效地解决问题。这确保了我们从每个包含 0 的单元格到最近的 1 的最小距离。 O(R × C) 的时间复杂度意味着即使对于大型矩阵,该解决方案也只需要很短的时间。这种方法对于非加权网格(如本问题中使用的网格)中的最短路径问题非常有效。 下一主题OOPs 选择题 |
随着在线 Java 编译器的日益普及,开发者现在可以直接在 Web 浏览器中编写和执行 Java 代码。借助这些编译器,用户无需在本地设置集成开发环境 (IDE) 即可轻松测试他们的代码...
阅读 3 分钟
这是一个原始数据类型。它用于声明变量。它还可以与方法一起用于返回整数类型的值。它可以容纳一个 32 位有符号二进制补码整数。要点:int 包含最小值 -231 和最大值...
阅读 2 分钟
在 Java 中,创建异常的测试用例并不困难。Java 的 JUnit 测试工具提供了一种跟踪代码异常处理的方法。我们可以编写测试用例来检查代码是否抛出预期的异常。在...中...
阅读 4 分钟
问题如下:有一个数组;您必须从中选择一个子序列,找出其元素的最大和;此外,子序列中连续元素的索引之间的差值不能超过 6。...
阅读 4 分钟
Java ImageIO 类是 javax.imageio 包中的一个 final 类。该类提供了用于读取和写入图像以及执行简单编码和解码的便捷方法。该类提供了许多与图像处理相关的实用方法。使用该类,我们...
阅读 4 分钟
给定一个整数 k 和一个整数数组 num,任务是确定一个“好”子数组的最大得分。子数组的长度 (j - i + 1) 乘以其中的最小值决定了其得分。子数组的开始和结束...
5 分钟阅读
它类似于 Java 中用于遍历源(集合、生成器函数或 IO 通道)元素的其他迭代器。Spliterator 是 Streams 的基础实用程序,尤其是并行 Streams。为了使用 Spliterator 处理集合,我们通过调用……来创建一个 Spliterator 对象。
阅读9分钟
? 构造函数是在创建类的实例变量时用于初始化实例变量的代码块。类中的默认构造函数在对象创建时被调用。但是,我们也可以使用带参数的构造函数来初始化数据成员,...
阅读 2 分钟
java.time.format.DecimalStyle 类 toString() 方法。要在 Java 中获取此 DecimalStyle 的 String 值,请使用 DecimalStyle 类。String 值由此函数返回的 String 表示。语法:public String toString() 参数:主方法不接受任何参数。返回值:...
阅读 2 分钟
? Java 是最广泛使用的编程语言之一,应用范围广泛,从开发移动应用程序到基于 Web 的应用程序和软件系统。然而,Java 并非没有需要故障排除的问题,包括弃用错误。当方法或...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India