*嗨,我们刚刚开始讨论这个话题,所以我不确定该怎么做,书中的例子对我没有帮助。 该计划是:
public static Stack<Queue<Integer>> qq(Stack<Queue<Integer>> q1)
{
Stack<Queue<Integer>>copy=new Stack<Queue<Integer>>(); // 1
Stack<Queue<Integer>>copy1=new Stack<Queue<Integer>>(); // 1
while(!q1.isEmpty()) // n+1
copy.push(q1.pop()); // n
while(!copy.isEmpty()) // n+1
{
q1.push(copy.top()); // n
copy1.push(copy.pop()); // n
}
while(!copy1.isEmpty()) // n+1
{
Queue<Integer>q=new Queue<Integer>(); // n
copy.push(q); // n
int n1=copy1.top().remove(); // n
while (!copy1.top().isEmpty()==true)
{
for (int i=n1+1;i<copy1.top().head();i++)
copy.top().insert(i);
n1=copy1.top().remove();
}
copy1.pop(); // n
}
while(!copy.isEmpty()) // n+1
copy1.push(copy.pop()); // n
return copy1; // 1
例如,如果复杂性为n + 1,我们的老师希望我们这样做,而不是简化为n。
我不知道如何计算我没有写的复杂性,我认为其余的都是正确的。有谁可以向我解释一下? 非常感谢!!
答案 0 :(得分:0)
时间复杂度取决于程序/代码执行的时间。 粗略地(渐近) 如果你的代码没有任何循环那么它需要恒定的时间,即O(1) 如果你的代码有循环并且它运行n次,那么你的程序时间复杂度是O(n)
在这种情况下,您的代码运行n + 1次,因此您可以得出结论,程序的时间复杂度为O(n) - 渐近。