【发布时间】:2016-07-02 08:43:49
【问题描述】:
这是一个谷歌面试问题。
给定一个包含 N 行 N 列的矩阵。矩阵中的元素可以是 1 或 0。矩阵的每一行和每一列都按升序排序。求给定矩阵中 0-s 的个数。
我想出了一个 O(n) 的解决方案,但根本无法提供一个 O(logn) 的解决方案。任何指针都非常感谢。
编辑:似乎 O(logn) 似乎不可能,如下所述。
【问题讨论】:
-
展示你的 O(n) 解决方案
-
你确定这在最坏情况复杂度 O(log n) 中实际上是可行的吗?可能是你忘记了问题的一些假设吗?或者,也许您在谈论平均案例复杂度
-
向我们展示您的代码...我认为这是不可能的
-
这是一个 O(n) 的解决方案:假设索引从 1 到 n,从 i=n 开始,j=1 做:如果元素是 1 那么 i--,如果是0 然后 j++。通过这种方式,您可以识别所有“枢轴”,即每行中的第一个 1(每当您从水平移动变为垂直移动时,您都会得到一个枢轴)。这最多需要 2n 步。
-
@Saphrosit 抱歉,但我不明白您的算法...请发布您的代码或示例或其他内容的链接...对我来说这没有任何意义