Leetcode刷题100天—面试题 03.04. 化栈为队(队列)—day13

Posted 神的孩子都在歌唱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—面试题 03.04. 化栈为队(队列)—day13相关的知识,希望对你有一定的参考价值。

前言:

作者:神的孩子在歌唱

大家好,我叫运智

实现一个MyQueue类,该类用两个栈来实现一个队列。

示例:

MyQueue queue = new MyQueue();

queue.push(1);
queue.push(2);
queue.peek();  // 返回 1
queue.pop();   // 返回 1
queue.empty(); // 返回 false

说明:

  • 你只能使用标准的栈操作 – 也就是只有 push to top, peek/pop from top, sizeis empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-queue-using-stacks-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package 队列;

import java.util.Stack;

public class _面试题03_04_化栈为队 {
//	思路:设置两个栈,一个栈负责入栈,一个栈负责出栈
	private Stack<Integer> instack;
	private Stack<Integer> outstack;
	public _面试题03_04_化栈为队() {
		instack=new Stack<>();
		outstack=new Stack<>();
	}
//	入栈
	public void push(int x) {
		instack.push(x);
	}
//	出栈
	public int pop() {
//		如果出栈的栈为空
		if (outstack.isEmpty()) {
//			通过循环将第一个栈的元素放入到第二个栈中
			while(!instack.isEmpty()) {
				outstack.push(instack.pop());
			}
		}
//		出栈
		return outstack.pop();
	}
//	获取栈顶元素
	public int peek() {
//		如果出栈的栈为空
		if (outstack.isEmpty()) {
//			通过循环将第一个栈的元素放入到第二个栈中
			while(!instack.isEmpty()) {
				outstack.push(instack.pop());
			}
		}
		return outstack.peek();
	}
//	判断是否为空
	public boolean empty() {
		return instack.isEmpty()&& outstack.isEmpty();
	}
}

本人csdn博客:https://blog.csdn.net/weixin_46654114

转载说明:跟我说明,务必注明来源,附带本人博客连接。

以上是关于Leetcode刷题100天—面试题 03.04. 化栈为队(队列)—day13的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—面试题 16.16. 部分排序(排序)—day58

Leetcode刷题100天—面试题 17.14. 最小K个数(优先队列)—day27

Leetcode刷题100天—面试题 17.14. 最小K个数(优先队列)—day27

LeetCode面试刷题技巧-二分查找算法代码思路解析

LeetCode 面试最热100题 跳跃游戏

LeetCode 面试必备100题:Climbing Stairs 爬楼梯的方法