【发布时间】:2021-04-09 14:07:42
【问题描述】:
给定两个数组a 和b 等长n 具有正整数值,我想要一个算法来找到(a[j] - a[i]) * min(b[j], b[i]) 的最大数量使得0 <= i < j < n。这个问题与Maximum difference between two elements such that larger element appears after the smaller number 有点相关,但它也引入了数组b 的新限制。由于min() 限制,此算法不能通过创建新数组c 来使用,因此对于每个i:c[i] = a[i] * b[i]。
所以我想知道这个问题是否可以在线性O(n) 或O(n*logn) 中解决,或者可以证明只能在O(n^2) 中解决。任何提示都会很棒。
【问题讨论】:
-
你能链接到你发现这个问题的地方吗?
-
@IVlad 我没在某处找到它。它来自一个优化股票市场交易的问题,其中
a数组代表股票的价格,b数组代表当天可以买卖多少股票的限制i和@987654338 @分别。 -
能否请您也发布完整的原始问题?可能有一个不涉及这个公式的更简单的解决方案。
标签: arrays algorithm optimization dynamic-programming