在小于O(n ^ 2)的范围内最大化给定方程

时间:2015-08-02 17:51:45

标签: algorithm adhoc

给定数组如何找到

的最大值
    (ar[j]-ar[i]-1)*(min(ar[i],ar[j]))

及时O(n)或O(nlogn)

1 个答案:

答案 0 :(得分:1)

如果输入始终是非负的,那么使用除ar的最大元素ar[j]之外的任何内容都没有意义;使用ar[j]可以增加任何不使用ar[j]的产品。因此,我们可以在O(n)时间内找到最大值,并在ar[i]时间内针对O(n)的所有可能值进行尝试以解决问题。

如果输入不是非负的,则最大产品必须使用最大ar[j]或最小ar[j]。同样,我们可以找到最大值和最小值,并针对所有可能的ar[i]值进行尝试。