谁能帮忙确定这段代码的时间复杂度。这只是 O(1) 吗?如果不是,有人可以帮忙解释一下吗?我不是 100% 确定我的答案,所以我需要第二个意见,看看这个函数是否是 O(1)。
public static void secMax(int[] arr)
{
int n = arr.length - 1;
if (some condition not relate to n)
{
if(arr[a] * arr[b] > temp)
{
//print
}
else
{
//do something
}
}
else
{
if(arr[y] * arr[x] > second)
{
//something
}
else
{
//something else
}
}
}
答案 0 :(得分:2)
它是 O(1)。您没有任何遍历数组的循环。而且您没有任何递归调用。您的方法只有很少的 if/else 条件。如果您仔细检查,您的方法只会执行固定数量的操作,并且不会因输入数组长度而异。所以时间复杂度是恒定的。
答案 1 :(得分:2)
它是 O(1)。该程序只是简单地通过一些条件语句从上到下流动。任何代码块都不会执行多次,因此具有恒定的复杂性。
答案 2 :(得分:1)
时间复杂度为 O(1),因为您不执行任何循环来遍历参数数组,也不执行递归调用