通常用于连通性的定义

时间:2014-03-24 02:18:22

标签: 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

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

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连通性吗?

2 个答案:

答案 0 :(得分:2)

默认情况下我应该考虑8连接吗?

不,可以通过两种方式定义连接,4连接和8连接,并且没有默认的连接定义。此外,面试问题大多是低估的,因此如果含糊不清,你必须向面试官澄清。

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

您可以使用-Infinity替换所有的那些,然后使用Kadane的2D阵列算法找到具有最大总和的子矩形。在应用kadane之前,您还必须用零替换零。对于实施see this

请注意,无论黑色是否全部连接,找到包含全0的最大子矩形的算法都保持不变。

答案 1 :(得分:0)

这不符合OP的问题,但我认为这很有趣。

读者解决面试问题的第一个想法是找到一个边缘与轴对齐的矩形。注意" min矩形"可以是最小化其面积的矩形,并且它不需要与轴对齐,它可以旋转。例如:

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

一个4x4对齐的矩形将包含所有1' s,但也是一个对角线~4x1矩形,并且更小。

这些情况需要rotating calipers算法或类似算法。