关于列表和最大乘积的算法

Algorithm on List and Maximum Product

本文关键字:算法 于列表 列表      更新时间:2023-10-16

a)对于正实数的序列X=(x1,x2,…,xn),我们可以找到一个子序列,该子序列中的元素在O(n)中具有最大乘积。

b) 使用O(n)阶算法,我们可以合并m=sqrt(n)排序的序列,这些序列总共有n个元素。

为什么我的教授说这两句话是假的?

我读取了(a)的O(n)算法:http://www.geeksforgeeks.org/maximum-product-subarray/

有人能帮我吗?

我不知道第一条语句,但第二条语句可以通过以下参数判断为false:

由于存在sqrt(n)序列,每个序列有n个元素,因此n*sqrt(n)中的元素总数。在最坏的情况下,您需要至少检查每个元素一次,才能将它们全部合并到一个列表中,这将使时间复杂性至少为n*sqrt(n)。如果每个序列中都有sqrt(n)元素,请阅读编辑。

我真的不确定第一个,因为你提供的算法是针对整数的,而我们在你的情况下处理实数。

EDIT:k个排序数组和n个总元素的合并算法将时间复杂度设置为O(n*log(k))。即使每个序列都有sqrt(n)个元素(与前一段中假设的每个元素n相反),时间复杂性仍然是O(n*(log(sqrt(n)))。