集团网站建设特点 互联网课堂,静海网站开发,绍兴集团网站建设,域名网站账号链接#xff1a;
剑指 Offer 09. 用两个栈实现队列
题意#xff1a;
如题
解#xff1a;
第一个栈逆序栈#xff0c;存储插入顺序#xff0c;另一个栈正序栈负责弹出数据
优化思想#xff1a;只有当st2正序栈为空时才将st1逆序栈的转移过来#xff08;若st2不为空…链接
剑指 Offer 09. 用两个栈实现队列
题意
如题
解
第一个栈逆序栈存储插入顺序另一个栈正序栈负责弹出数据
优化思想只有当st2正序栈为空时才将st1逆序栈的转移过来若st2不为空则会导致st1转移的数据叠在st2已有数据上方我就不写了
实际代码
#includebits/stdc.h
using namespace std;
class CQueue {
public:stackintst1,st2;//st1 逆序 st2 正序 CQueue() default;//默认构造 void appendTail(int value){st2Tost1();st1.push(value); }//添加数值 int deleteHead(){st1Tost2();if(st2.empty()) return -1;else{int retst2.top();st2.pop();return ret;}}//移除数值
private:void st1Tost2(){while(!st1.empty()){st2.push(st1.top());st1.pop();}}void st2Tost1(){while(!st2.empty()){st1.push(st2.top());st2.pop();}}
};
int main()
{}限制
1 values 10000最多会对appendTail、deleteHead进行 10000 次调用