java - 在二维数组中查找非空网格单元

标签 java algorithm

我有一个二维整数数组(比如 1000 x 1000),我们称它为矩阵。此矩阵中的每个单元格都有一个 X 坐标和 Y 坐标(在本例中分别为 0 到 999)。最初所有网格单元的值为 0。在程序运行期间,一些矩阵单元被设置为另一个值 <> 0。

现在我需要一个快速函数(算法),它接受一些 X 和 Y 值并返回矩阵在该坐标处的值。但是,如果指定 X/Y 位置的矩阵为 0,则算法应在矩阵内确定一个尽可能接近原始 X/Y 位置的非零值。

我考虑过在每个循环周期增加偏移量的情况下围绕原始 X/Y 位置循环,但我不确定这是否真的是最快的算法...

有什么想法吗?我更喜欢 Java 代码,但任何伪代码也可以:)

在此先感谢您的帮助! 亲切的问候,马蒂亚斯

最佳答案

如果数组相对稀疏并且测试次数相对于插入次数较多,则朴素方法可能需要很长时间。

另一种方法是构建空间分区树,例如四叉树或 k-d 树。最近邻搜索的复杂度为 O(ln N),插入时间为 O(ln N)。

关于java - 在二维数组中查找非空网格单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350938/

相关文章:

algorithm - 如何最小化并行计算的运行时间?

algorithm - 任何分布式并行树搜索算法建议?

algorithm - 找到随机数组中的最大增量

python - 如何编写一个函数来查找字符串中的重复项?

Java字符串分割返回长度0

java - 一对多同类spring data(hibernate)

java - 我可以改进我的包装方法吗?

java - 使用 FFMPEG 从图像创建视频

java - 丢失新行符号 (\r\n)

在迷宫中寻找移动实体的算法