Java 如何确定时间复杂度是O(m+;n)还是O(Math.max(m,n))
我已经看过这段代码了,但是我很难理解它是O(m+n)而不是O(Math.max(m,n))。还是O(m+n)在O(Math.max(m,n))之下Java 如何确定时间复杂度是O(m+;n)还是O(Math.max(m,n)),java,performance,time,time-complexity,space-complexity,Java,Performance,Time,Time Complexity,Space Complexity,我已经看过这段代码了,但是我很难理解它是O(m+n)而不是O(Math.max(m,n))。还是O(m+n)在O(Math.max(m,n))之下 int i = 0, j = 0, res = 0; while (i < houses.length) { while (j < heaters.length - 1 && Math.abs(heaters[j + 1] - houses[i]) <= Math.a
int i = 0, j = 0, res = 0;
while (i < houses.length) {
while (j < heaters.length - 1
&& Math.abs(heaters[j + 1] - houses[i]) <= Math.abs(heaters[j] - houses[i])) {
j++;
}
res = Math.max(res, Math.abs(heaters[j] - houses[i]));
i++;
}
inti=0,j=0,res=0;
而(i &&abs(加热器[j+1]-houses[i])正如您已经猜到的,在大O符号下,两者都是相同的
这两个函数,m+n
和max(m,n)
都是集合的元素O(m+n)=O(max(m,n)
让我们来计算一下:
m+n=0
已经)
因此这两个函数都被另一个函数(加上一个常数因子)限定,因此O(m+n)
或O(max(m,n))
,集合是相等的
以下是形式(一维)定义(来源):
直觉上,这也是有意义的,因为这两个函数只意味着两个变量的线性增长
[…]导致O(n)总体。O(n+logn)未被提及[…]
我不确定这是否是一个问题。请注意,这两个集合同样与n(更简单地说,m+n)相同