【一个队列实现栈】Java队列——Queue接口-LinkedList实现类
题意:用一个队列实现栈
题解:
(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(); */
分类:
算法 / 力扣算法题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效