【发布时间】:2018-10-21 07:46:49
【问题描述】:
void reverseQueue(queue<int>& Queue)
{
stack<int> Stack;
while (!Queue.empty())
{
Stack.push(Queue.front());
Queue.pop();
}
while (!Stack.empty())
{
Queue.push(Stack.top());
Stack.pop();
}
}
我想知道这个函数的 Big-O 或 Big-Theta 表示法是什么,如果我们用一个包含 n 个元素的 Queue 来调用它。会不会是 O(n^2),因为我们两次推送和弹出 n 个元素,以便以相反的顺序将其从堆栈移回队列?感谢您的帮助。
【问题讨论】:
-
当元素数量翻倍时会发生什么?尝试用五个元素在纸上(或在你的手指上),然后用十个元素。操作次数会发生什么变化?是四倍吗?
标签: c++ stack queue big-o asymptotic-complexity