【一个队列实现栈】Java队列——Queue接口-LinkedList实现类

leetcode 225. 用队列实现栈

题意:用一个队列实现栈

题解:
(1)弹栈:将队头开始的前size()-1个元素全部出队然后重新入队,使队尾元素循环到队头,然后弹出
(2)获取栈顶元素:先将队头开始的前size()-1个元素全部出队然后重新入队,使队尾元素循环到队头,此时队头元素即为栈顶元素;然后再重新循环size()+1次,复原元素顺序

Java代码
class MyStack {
Queue<Integer> q = new LinkedList<>();
public MyStack() {
}
public void push(int x) {
q.offer(x);
}
public int pop() {
move(q.size() - 1);
return q.poll();
}
public int top() {
move(q.size() - 1);
int ans = q.peek();
move(q.size() + 1);
return ans;
}
public boolean empty() {
return q.isEmpty();
}
public void move(int t) {
while(t -- > 0) {
q.offer(q.poll());
}
}
}
/**
* Your MyStack object will be instantiated and called as such:
* MyStack obj = new MyStack();
* obj.push(x);
* int param_2 = obj.pop();
* int param_3 = obj.top();
* boolean param_4 = obj.empty();
*/
posted @   沙汀鱼  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示