我有一个看起来像这样的矩阵:
| 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 | 1 |
Run Code Online (Sandbox Code Playgroud)
我应该找到这个矩阵是否有一个用所有1填充的列.在这个矩阵中它是第4列.据说时间复杂度是O(n),内存是O(1).
该矩阵表示一组(人)的二元关系.n是集合的大小,因此矩阵的大小是n * n.
我可以看到两种可能的解决方案
还有其他方法吗?
让我对你想要做的事情进行非常疯狂的猜测.提及的提示:
O(n)算法好吧,你不能这样做,O(n)我可以证明它O(n^2)只是.
但我的野生猜测是,你做一个经典的名人身份的问题,那你误解的问题.
名人是每个人都知道的人,但不知道任何[其他人].
我是名人识别问题,你试图找到类似的东西:
Find the number i where
a[i][x] = 1 for all x -> every one knows the celebrity
a[x][i] = 0 for all x != i -> the celebrity doesn't know anyone else
Run Code Online (Sandbox Code Playgroud)
事实上,通过对你想要找到的东西的这种额外限制,有一个O(n)解决方案.