当前位置: 首页 > news >正文

剑指Offer 队列栈题目集合

目录

  • 用两个栈实现队列

用两个栈实现队列

刷题链接
https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

题目描述
在这里插入图片描述

思路一
使用两个栈来实现队列的功能。栈 1 用于存储入队的元素,而栈 2 用于存储出队的元素。
1.push方法将元素压入栈 1。
2.pop方法首先检查栈 2 是否为空。如果为空,则将栈 1 中的所有元素移到栈 2。然后,弹出栈 2 中的顶部元素并返回。

在这里插入图片描述

复杂度分析

时间复杂度:在最坏情况下,pop 操作的时间复杂度是 O(n),但在平均情况下,当栈2中有元素时,pop 操作的时间复杂度是 O(1)。这是因为在平均情况下,元素不会每次都从栈1移动到栈2。总体而言,这个实现的 push 操作是 O(1),而 pop 操作的最坏情况下是 O(n),平均情况下是 O(1)。
空间复杂度: O(n),辅助栈的空间,最差的情况下两个栈共存储N个元素。

python3

# -*- coding:utf-8 -*-
class Solution:def __init__(self):self.stack1 = []self.stack2 = []def push(self, x: int) -> None:# 入队时直接将元素压入 stack1self.stack1.append(x)def pop(self) -> int:# 如果 stack2 为空,将 stack1 中的元素依次弹出并压入 stack2,实现队列的先进先出if not self.stack2:while self.stack1:self.stack2.append(self.stack1.pop())# 弹出 stack2 的栈顶元素,即队列头部的元素return self.stack2.pop()

C++

class Solution {public:// 入队操作,将元素压入 stack1void push(int x) {stack1.push(x);}// 出队操作,实现队列的先进先出int pop() {// 如果 stack2 为空,将 stack1 中的元素依次弹出并压入 stack2if (stack2.empty()) {while (!stack1.empty()) {stack2.push(stack1.top());stack1.pop();}}// 弹出 stack2 的栈顶元素,即队列头部的元素int frontElement = stack2.top();stack2.pop();return frontElement;}private:stack<int> stack1;stack<int> stack2;
};
http://www.lryc.cn/news/264846.html

相关文章:

  • grafana基本使用
  • 备份至关重要!如何解决iCloud的上次备份无法完成的问题
  • 【项目问题解决】% sql注入问题
  • B/S医院手术麻醉临床管理系统源码 手术申请、手术安排
  • 解锁高效工作!5款优秀工时管理软件推荐
  • ICLR 2024 高分论文 | Step-Back Prompting 使大语言模型通过抽象进行推理
  • 边缘计算有哪些常用场景?TSINGSEE边缘AI视频分析技术行业解决方案
  • 配置BGP的基本示例
  • Flask解决接口跨域问题
  • 数据恢复工具推荐!这3款堪称删除文件恢复大师!
  • 论文笔记 | ICLR 2023 ReAct:通过整合推理和行动来增强语言模型
  • CSS:元素显示模式与背景
  • K8S 为什么关闭 SELinux 和交换内存
  • 7. ASP.NET Core Blazor 官网文档
  • xrandr
  • 【高效开发工具系列】eclipse部署web项目
  • 实在智能成功完成近2亿元C轮融资,全面迎接2024年Agent智能体应用元年
  • vue创建项目
  • 智能变电站集中监控辅助决策系统解决方案
  • PyQt5基础知识第三天
  • docker安装ES:7.8和Kibana:7.8
  • React 状态管理 - 优化你的应用程序
  • Python异常捕获和处理方式
  • PDF文件如何设置限制打印?
  • 互操作性(Interoperability)如何影响着机器学习的发展?
  • 从零实现一套低代码(保姆级教程) --- 【3】实现Button组件和画布区的拖拽
  • 仓储1、10、11代电子标签接口文档
  • iOS将framework转为xcframework
  • 2018年第七届数学建模国际赛小美赛C题共享单车对城市交通的影响解题全过程文档及程序
  • 【数据结构】线段树算法总结(单点修改)