【发布时间】:2019-08-12 12:30:27
【问题描述】:
假设您需要计算矩阵上的岛屿数量
{1, 1, 0, 0, 0},
{0, 1, 0, 0, 1},
{1, 0, 0, 1, 1},
{0, 0, 0, 0, 0},
{1, 0, 1, 0, 1}
当输入矩阵大小适合内存时,我们可以简单地使用 DFS 或 BFS。
但是,如果输入矩阵非常大,无法放入内存,我们该怎么办?
我可以将输入矩阵分块/分割成不同的小文件并分别读取它们。
但是如何合并它们呢?
我对如何合并它们感到困惑。我的想法是,在合并它们时,我们必须阅读一些重叠的部分。但是具体的方法是什么?
试图理解马特的解决方案。
当我在白板上绘制以下示例并逐行处理时。 向左合并,然后向上合并,好像不行。
来自马特的解决方案。
不知道topidx、botidx是什么意思
int topidx = col * 2;
int botidx = topidx + 1;
【问题讨论】:
-
如何定义“岛”?
-
连接的 1 被认为是一个岛。