哈尔滨站建好了吗,匠王红木在那个网站做众筹,自己做简历网站,广告图文制作图片LeetCode 剑指offer 09.用两个栈实现队列
题目描述
用两个栈实现一个队列。队列的声明如下#xff0c;请实现它的两个函数 appendTail 和 deleteHead #xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素#xff0c;deleteHead 操作返回…LeetCode 剑指offer 09.用两个栈实现队列
题目描述
用两个栈实现一个队列。队列的声明如下请实现它的两个函数 appendTail 和 deleteHead 分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素deleteHead 操作返回 -1 )
这道题很简单主要理解栈与队列的区别注意细节就可以 题解
c
class CQueue {
public:stackint s1, s2;CQueue() {while (!s1.empty()) {s1.pop();}while (!s2.empty()) {s2.pop();}}void appendTail(int value) {s1.push(value);}int deleteHead() {if (s2.empty()) {while(!s1.empty()) {s2.push(s1.top());s1.pop();}}if (s2.empty()) {return -1;} else {int app s2.top();s2.pop();return app;}}
};/*** Your CQueue object will be instantiated and called as such:* CQueue* obj new CQueue();* obj-appendTail(value);* int param_2 obj-deleteHead();*/Go
type CQueue struct {inStack, outStack []int
}func Constructor() CQueue {return CQueue{}
}func (this *CQueue) AppendTail(value int) {this.inStack append(this.inStack, value)
}func (this *CQueue) DeleteHead() int {if len(this.outStack) 0 {if len(this.inStack) 0 {return -1}this.in2out()}value : this.outStack[len(this.outStack)-1]this.outStack this.outStack[:len(this.outStack)-1]return value
}func (this *CQueue) in2out() {for len(this.inStack) 0 {this.outStack append(this.outStack, this.inStack[len(this.inStack)-1])this.inStack this.inStack[:len(this.inStack)-1]}
}