我最近遇到一个面试问题,Matrix largest product of n numbers in a row
我明白滚动乘法的方法。我想知道,如果我把问题限定为必须选择整行、整列或对角线,是否还有进一步的优化可能。
所以基本上现在的问题是,
给定一个NxM矩阵,找到最大乘积的行、列或对角线。
有没有可能的o(log n)算法?
最佳答案
你必须在每一行和每一列至少看一次,所以你不能做得比o(max(m,n))更好。为了简单起见,许多人考虑m==n并将其表示为o(n)。
因为您还需要查看行/列中的每个元素,所以它是O(M*N)从本质上说,这表明在得到结果之前,需要查看矩阵的每个元素。