一、
因为有太多遗忘的东西了,所以做题速度会很慢
现在理解题目,把题目理解好了,然后去看题解,看完题解,在去搜索相关知识点进行补充。
二、题目

三、理解
栈:先进后出;队列:先进先出
要满足题目的要求,我们要把栈底输出出来,我们可以把栈倒着输出,就可以满足队列的先进先出。
所以我们需要两个栈来,第一个栈是进栈,第二个栈进行队列头部删除功能。
原理解释清楚了,我们还需要理解一些细节
1.判断第一个栈是否为空栈,空栈就可以直接输出-1
2.判断第二个栈是否为空栈,不是空栈,我们要继续输出第二个栈里的值
3.利用wihle的循环把第一个栈里的值给到第二个栈里面
4.知道两个栈都为空,代码结束
四、代码分析
class CQueue { stack<int> s1,s2; public: CQueue() { } void appendTail(int value) { s1.push(value); } int deleteHead() { if(!s2.empty()) { int a=s2.top(); s2.pop(); return a; } if(s1.empty()) return -1; while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } int b =s2.top(); s2.pop(); return b; } }; /** * Your CQueue object will be instantiated and called as such: * CQueue* obj = new CQueue(); * obj->appendTail(value); * int param_2 = obj->deleteHead(); */
浙公网安备 33010602011771号