给定一个由 1 和 0 组成的矩阵 (n x n),其中 1 代表土地,0 代表水。
如何以最有效的方式找到土地面积的中位数?

例如:

1 1 0 0 0

1 0 0 1 1

1 0 1 0 0

有3个岛,面积为[1,2,4],中位数为2

一个岛可以由包含 1 的连续非对角线单元组成:
例如:

1 0 1

0 1 0

该矩阵包含三个区域岛屿 [1,1,1]

我的解决方案是递归查找区域,然后对它们进行排序以找到需要 O(n^2log(n^2)) 的中位数,有没有更有效的方法来做到这一点?

最佳答案

第一步,在网格上递归运行 DFS,并在 O(n^2) 时间内发现所有岛屿并计算面积。

第二步,您可以使用Median of Medians 算法计算未排序岛屿区域数组在预期O(m) 时间内的中值,其中m 是岛屿的数量。

总体时间复杂度 O(n^2)

如果您需要进一步的帮助,我可以提供我的实现。

关于algorithm - 矩阵中给出的面积的中位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52167813/

10-11 22:59