algorithm - 通常对连通性使用什么定义

标签 algorithm

我在练习面试时,在 Glassdoor 上发现了以下问题。

Given a board with black (1) and white (0), black are all connected. find the min rectangle that contains all black. An example given is
0 0 0 0 0 
0 1 1 1 0 
0 1 1 0 0 
0 1 0 0 0 
0 0 0 0 0

这个问题挑战了我对连通性的理解,下面矩阵中的1会被认为是相互连通的吗?

0 0 0 0 0 
0 1 0 1 0 
0 1 0 1 0 
0 1 1 1 0 
0 0 0 0 0

我应该默认考虑 8 个连通性吗?

最佳答案

默认情况下我应该考虑 8 个连通性吗?

不,连接可以用两种方式定义:4 个连接和 8 个连接,并且没有默认的连接定义。此外,面试问题大多比较低调,因此您必须向面试官澄清,以免出现歧义。

找到包含全黑色的最小矩形。

您可以用 -Infinity 替换所有的,然后使用 Kadane 的二维数组算法找到总和最大的子矩形。在应用 kadane 之前,您还必须将零替换为 1。对于实现see this .

注意,无论黑色是否全部相连,寻找全0的最大子矩形的算法都是一样的。

关于algorithm - 通常对连通性使用什么定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599998/

相关文章:

mysql - 快速更新大量数据

c++ - 一种类型的十进制表示的长度的近似值

algorithm - 模糊 k-means - 没有关联,下一次迭代中的质心如何计算?

algorithm - 如何检查数字是否从给定数字生成

java - 如何以最快的方式将两个排序数组相交?

c - 估计代码在本地linux系统上的执行时间

algorithm - interview Q :Given an input array of size unknown with all 1's in the beginning and 0' s in the end. 查找数组中从0开始的索引

algorithm - 在排序数组 A 中查找和等于 K 的唯一对

java - 如何在不使用数组的情况下输入n个数字并按升序打印

python - 查找数组的第一个副本