【发布时间】:2018-05-09 23:49:42
【问题描述】:
所以下面是一个面试题。
给定两个 N2 矩阵,其条目为
0或1。我们如何找出1可能的最大重叠数?
注意:矩阵只能上下左右移动,不能旋转
目前我被困在最幼稚的O(N^4) 方法上,即将一个矩阵的左上角与另一个矩阵的每个可能位置对齐,并计算所有重叠的 1。
示例:
[0 1 0] [0 0 1]
A: [1 0 0] B: [0 0 1]
[1 0 0] [0 0 0]
那么最大重叠1的个数为2,即我们从B的(0,2)到(1,0)的 A,则 (0,2) 和 (1,0) 都是 1,并且 (1,2) 和 (2,0) 都是 1。
可以从O(N4)优化吗?
【问题讨论】:
-
你的面试官是否对矩阵的大小或值的生成方式有任何限制?
-
不,他没有。矩阵的大小与算法有何关系?
-
如果 N=3 如您的示例所示,则 N^4 解决方案很好。这很简单,编写更有效但更复杂的东西没有任何好处。如果 N 可以很大,那么更复杂但更有效的算法是可取的。通常,对于大输入效率更高的算法不仅更复杂,而且比处理小输入的简单算法慢。