由两个栈组成的队列,数组 栈 队列
BM42实现了两个堆栈的队列。
本文描述了一个具有两个栈的队列的实现,它使用n个元素来完成n次在队列末尾插入整数(push)和在队列头删除整数(pop)的功能。队列中的元素属于int类型。确保操作合法,即确保pop操作时队列中有元素。
数据范围:要求:存储N个元素的空间复杂度为,插入和删除的时间复杂度为。
示例1输入:
[PSH1 , PSH2 , POP , POP]复制返回值:
1.2复印说明:
PSH1 :表示在队列末尾插入1。
PSH2 :表示在队列末尾插入2。
“POP”:表示删除一个元素,FIFO=return 1。
POP :表示删除一个元素,FIFO=return 2例2输入:
[PSH2 , POP , PSH1 , POP]复制返回值:
2,1解决push问题时,在pop中直接将数据放入堆栈时,如果out堆栈不为空,则直接弹出堆栈的顶层元素;否则,out堆栈的顶部元素将被逐个推入out。//3359 www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6? tpId=295 tqId=23281 ru=/exam/OJ qru=/ta/format-top 101/question-ranking source URL=/exam/OJ?page=1 & tab=% E7 % AE % 97% E6 % B3 % 95% E7 % AF % 87 & topic id=295
#包含位/标准数据。h
使用命名空间std
类队列_1
{
公共:
void push(int节点)
{
而(!out.empty())
{
in . push(out . top());
out . pop();
}
in.push(节点);
而(!in.empty())
{
out . push(in . top());
in . pop();
}
}
int pop()
{
int t=out . top();
out . pop();
return t;
}
私人:
堆栈int in
stack int out
};
类别解决方案
{
公共:
void push(int节点)
{
in.push(节点);
}
int pop()
{
如果(!out.empty())
{
int n=out . top();
out . pop();
返回n;
}
而(!in.empty())
{
out . push(in . top());
in . pop();
}
int n=out . top();
out . pop();
返回n;
}
私人:
堆栈int in
stack int out
};
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。