【发布时间】:2021-08-14 04:28:47
【问题描述】:
代码应该找到两个数字之间的最大下降(或差异),而较大的数字必须在较小的数字之前(不一定是一个相邻的数字)。
我想知道您是否可以在这里帮助我了解代码的复杂性。 在这种情况下让我感到困惑的是,考虑到最坏的情况(如果我错了,请纠正我)我遍历数组,j 次 n 次,i 次 n-1 次。 它是相加还是相乘?为什么?
O(n+n-1)?还是 O(n*(n-1))?
public static int maximalDrop (int[] a)
{
int max=0; int i=0; int j=1;
while (j<a.length && i<a.length-1)
{
if (a[i] > a[j])
{
int temp = a[i] - a[j];
if (temp > max)
{
max = temp;
}
}
j++;
if (j>a.length-1)
{
i++;
j=i+1;
}
}
return max;
}
【问题讨论】:
-
您认为您的循环执行了多少次?
n+n-1times 还是n*(n-1)times?
标签: java loops while-loop complexity-theory