这是一个非常有名的跨国公司问我的问题。问题如下...
输入 0 和 1 的 2D N*N 数组。如果 A(i,j) = 1,则第 i 行第 j 列对应的所有值都将为 1。如果已经有 1,则保持为 1。
例如,如果我们有数组
1 0 0 0 0
0 1 1 0 0
0 0 0 0 0
1 0 0 1 0
0 0 0 0 0
我们应该得到输出
1 1 1 1 1
1 1 1 1 1
1 1 1 1 0
1 1 1 1 1
1 1 1 1 0
输入矩阵是稀疏填充的。
这可能在小于 O(N^2) 的时间内完成吗?
没有提供额外的空间是另一个条件。我想知道是否有一种方法可以使用空间 <= O(N) 来实现复杂性。
PS:我不需要复杂度为 O(N*N) 的答案。这不是家庭作业问题。我已经尝试了很多,但无法找到合适的解决方案,并认为我可以在这里得到一些想法。将打印放在一边以考虑复杂性
我的粗略想法是可以动态消除遍历的元素数量,将它们限制在 2N 左右。但我无法得到一个正确的想法。