【发布时间】:2022-01-10 15:17:15
【问题描述】:
输入:
[1, 0, 1],
[0, 1, 0],
[1, 0, 1]
输出: [2, 1, 2]
对于本例,n = 行数或列数
对于给定的二进制矩阵,我能否以 O(n) 的时间复杂度获得每行中 1 的计数的数组?
【问题讨论】:
-
你试过只使用
count()吗? :[l.count(1) for l in list_of_lists]。或者只是一个总和:list(map(sum, list_of_lists))? -
是的。循环遍历每一行,并计算该行中零的数量。当然,我假设您的意思是
N是矩阵的大小 -
如果不查看数组的每个元素,就无法解决这个问题。因此,最快的算法是查看每个元素一次,并且已经向您展示了该算法的几个版本。正如其他人所说,您的问题含糊不清,
n是什么意思? -
选择一种语言,尝试一下,失败时发布minimal reproducible example。
-
您陈述问题的方式可能没有 O(n) 解决方案。但是bit counting 有固定时间的解决方案。根据二进制矩阵的实现,您可以在特殊/有限情况下以 O(n) 计算所需的输出数组。
标签: python java matrix time-complexity