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

举报
神的孩子在歌唱 发表于 2021/09/30 18:05:39 2021/09/30
【摘要】 前言:作者:神的孩子在歌唱大家好,我叫运智实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 – 也...

前言:

作者:神的孩子在歌唱

大家好,我叫运智

image-20210818195502714

实现一个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

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

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。