我有一个大小为n+1的数组,我希望在其中存储购买n个物品的最小成本(第i个索引存储第i个物品的成本)。
有m个不同的卖家:每个卖家提供L到R项目(其中L,R>=1且L,R<=n),每个项目的成本是C。
为了创建最小成本数组,我执行了以下操作:
构造这个数组的时间复杂度是
对于非常大的
也许可以采用一种不将其存储在数组中的不同方法,以便减少总体时间复杂度?
有m个不同的卖家:每个卖家提供L到R项目(其中L,R>=1且L,R<=n),每个项目的成本是C。
为了创建最小成本数组,我执行了以下操作:
for (int i=1; i<=m; i++) {
int L = L of i^th seller
int R = R of i^th seller
int C = selling price of i^th seller
for (int j=L; j<=R; j++) {
if (leastCost[j]==0 || leastCost[j]>C) {
leastCost[j]=C
}
}
构造这个数组的时间复杂度是
O(n*m)
,访问这个数组的时间复杂度是O(1)
。对于非常大的
n
和 m
值,有没有更好的方法来构建成本最小的数组呢?也许可以采用一种不将其存储在数组中的不同方法,以便减少总体时间复杂度?
O(n^2)
。我得到的是 O(n * m)。这是完全不同的。当考虑到你实际需要访问(读取)多少个元素时,这应该是最优的。除非你有任何额外的信息可以开始使用... - Aronm
个卖家和n
个价格(平均值)。因此这是n*m
。你至少需要遍历每个元素一次,因此(n*m)
是最优的(除非你有量子计算机)。 - xyz