欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

领扣LintCode问题答案-40. 用栈实现队列

程序员文章站 2022-07-15 12:12:57
...

领扣LintCode问题答案-40. 用栈实现队列

40. 用栈实现队列

正如标题所述,你需要使用两个栈来实现队列的一些操作。

队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。

pop和top方法都应该返回第一个元素的值。

假设调用pop()函数的时候,队列非空

样例 1:

输入:
push(1)
pop()
push(2)
push(3)
top()
pop()
输出:
1
2
2

样例 2:

输入:
push(1)
push(2)
push(2)
push(3)
push(4)
push(5)
push(6)
push(7)
push(1)
输出:
[]

public class MyQueue {
	private final Stack<Integer> inStack  = new Stack<>();
	private final Stack<Integer> outStack = new Stack<>();

	public MyQueue() {
		// do intialization if necessary
	}

	/*
	 * @param element: An integer
	 * @return: nothing
	 */
	public void push(int element) {
		// write your code here
		inStack.push(element);
	}

	/*
	 * @return: An integer
	 */
	public int pop() {
		// write your code here
		adjust();
		return outStack.pop();
	}

	/*
	 * @return: An integer
	 */
	public int top() {
		// write your code here
		adjust();
		return outStack.peek();
	}

	private void adjust() {
		if (outStack.isEmpty()) {
			while (!inStack.isEmpty()) {
				outStack.push(inStack.pop());
			}
		}
	}
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

相关标签: 算法 算法