假设在数组的每一行中,所有1都在0之前,我怎么能想出一个(O)nlogn算法来计算1' s在数组中。我想首先我必须制作一个计数器,搜索每一行1(n),并将其添加到计数器。 " log n part"参加进来?我读到这样做的递归算法具有nlogn复杂性,但我不太确定如何做到这一点。我知道如何使用for循环在O(n ^ 2)中执行此操作。伪代码或提示会有所帮助!谢谢
答案 0 :(得分:4)
由于所有1都在0之前,你可以使用二进制搜索算法(它是log N)找到前0的索引,你只需要为所有N行执行此操作。所以总复杂度是NlogN。