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

代码随想录二刷 | 栈与队列 | 用队列实现栈

代码随想录二刷 | 栈与队列 | 用队列实现栈

  • 题目描述
  • 解题思路 & 代码实现

题目描述

225.用队列实现栈

使用队列实现栈的下列操作:

  • push(x) – 元素 x 入栈
  • pop() – 移除栈顶元素
  • top() – 获取栈顶元素
  • empty() – 返回栈是否为空

注意:

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

解题思路 & 代码实现

这里使用单个队列模拟栈,弹出的时候只需要把除了最后一个元素之外的元素弹出再压入,此时原本在最后一个的元素来到了第一位,将其弹出即可。

class MyStack {
public:
	quque<int> que;
    MyStack() {

    }
    
    void push(int x) {
		que.push(x);
    }
    
    int pop() {
		int size = que.size();
		size--;
		while (size--) {
			que.push(que.front());
			que.pop();
		}
		int result = que.front;
		que.pop();
		return result;
    }
    
    int top() {
		return que.back();
    }
    
    bool empty() {
		return que.empty();
    }
};

http://www.kler.cn/a/158579.html

相关文章:

  • Python练习(3)
  • HyperLogLog 近似累计去重技术解析:大数据场景下的高效基数统计
  • Java内存模型 volatile 线程安全
  • 我是如何写作的?
  • Java 知识速记:全面解析 final 关键字
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.30 性能巅峰:NumPy代码优化全攻略
  • 华容道问题求解第一部分_思路即方案设计
  • 掌握反转链表的艺术:LeetCode 206 深入解析与优化 - 双指针与递归方法精讲
  • 关于队列的简单理解
  • JS--异步的日常用法
  • 在vscode下将ipynb文件转成markdown(.md文件)的方法
  • 12.4 C++ 作业
  • 【win32_003】不同字符集下的通用字符串语法TCHAR、TEXT、PTSTR、PCTSTR
  • 有趣的代码——有故事背景的程序设计3
  • 驱动模块--内核模块
  • Qt 布局讲解及举例
  • 打破界限:SQL数据库水平扩展的8大挑战与机遇
  • 【开源】基于JAVA的医院门诊预约挂号系统
  • (C++)有效三角形的个数--双指针法
  • 推荐6款本周 火火火火 的开源项目
  • SpringBoot学习笔记-实现微服务:匹配系统(下)
  • C语言初学4:C 存储类
  • RocketMQTemplate 发送消息的高级用法
  • 流程编排-java
  • GOLAND搭建GIN框架以及基础框架搭建
  • 一文解决msxml3.dll文件缺失问题,快速修复msxml3.dll