leetcode-用两个栈实现队列-61

Posted 天津 唐秙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-用两个栈实现队列-61相关的知识,希望对你有一定的参考价值。

题目要求
  用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

思路
  使用两个栈,A栈负责存储数据,只需要进行push,当需要取数据的时候,将A栈的元素push到B栈当中,返回B栈当中的栈顶元素,如果B栈为空,说明没有元素返回-1。

代码实现

class CQueue {
	stack<int> stack1, stack2;
public:
	CQueue() {
		while (!stack1.empty())
			stack1.pop();
		while (!stack2.empty())
			stack2.pop();
	}

	void appendTail(int value) {
		stack1.push(value);
	}

	int deleteHead() {
		if (stack2.empty())
		{
			while (!stack1.empty())
			{
				stack2.push(stack1.top());
				stack1.pop();
			}
		}
		if (stack2.empty())
		{
			return -1;
		}
		else
		{
			int delete_val = stack2.top();
			stack2.pop();
			return delete_val;
		}
	}
};

以上是关于leetcode-用两个栈实现队列-61的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 09. 用两个栈实现队列

用两个队列实现一个栈and用两个栈实现一个队列

LeetCode | 面试题09. 用两个栈实现队列剑指OfferPython

LeetCode 剑指 Offer 09. 用两个栈实现队列 | Python

[LeetCode]剑指 Offer 09. 用两个栈实现队列

LeetCode-面试题09-用两个栈实现队列