码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 代码随想录算法训练营第23期day10 |232.用栈实现队列、225. 用队列实现栈


    目录

    一、(leetcode 232)用栈实现队列

    二、(leetcode 225)用队列实现栈

    两个队列

    一个队列


    一、(leetcode 232)用栈实现队列

    状态:已AC。pop()、peek()实现逻辑一样,就是peek()要把元素push回去

    力扣题目链接

    先进后出与先进先出的区别

    1. class MyQueue {
    2. public:
    3. stack<int> stIn;
    4. stack<int> stOut;
    5. /** Initialize your data structure here. */
    6. MyQueue() {
    7. }
    8. void push(int x) {
    9. stIn.push(x);
    10. }
    11. int pop() {
    12. if (stOut.empty()) {
    13. // 从stIn导入数据直到stIn为空
    14. while(!stIn.empty()) {
    15. stOut.push(stIn.top());
    16. stIn.pop();
    17. }
    18. }
    19. int result = stOut.top();
    20. stOut.pop();
    21. return result;
    22. }
    23. int peek() {
    24. int m=this->pop();
    25. stOut.push(m); // 因为pop函数弹出了元素res,所以再添加回去
    26. return m;
    27. }
    28. bool empty() {
    29. return stIn.empty()&&stOut.empty();
    30. }
    31. };

    注意一下

    1. /** Initialize your data structure here. */
    2. MyQueue() {
    3. }

    二、(leetcode 225)用队列实现栈

    力扣题目链接

    状态:已AC。与上一题区别:双queue时,另一个queue是备份,而非颠倒数据顺序作用

    两个队列

    1. lass MyStack {
    2. public:
    3. queue<int> que1;
    4. queue<int> que2; // 辅助队列,用来备份
    5. /** Initialize your data structure here. */
    6. MyStack() {
    7. }
    8. void push(int x) {
    9. que1.push(x);
    10. }
    11. int pop() {
    12. int size = que1.size();
    13. size--;// 将que1 导入que2,但要留下最后一个元素
    14. while (size--) {
    15. que2.push(que1.front());
    16. que1.pop();
    17. }
    18. int result = que1.front(); // 留下的最后一个元素就是要返回的值
    19. que1.pop();
    20. que1 = que2; // 再将que2赋值给que1
    21. while (!que2.empty()) { // 清空que2
    22. que2.pop();
    23. }
    24. return result;
    25. }
    26. int top() {
    27. return que1.back();
    28. }
    29. bool empty() {
    30. return que1.empty();
    31. }
    32. };

    一个队列

    1. class MyStack {
    2. public:
    3. queue<int> que;
    4. /** Initialize your data structure here. */
    5. MyStack() {
    6. }
    7. int pop() {
    8. int size = que.size();
    9. size--;
    10. while (size--) { // 将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部
    11. que.push(que.front());
    12. que.pop();
    13. }
    14. int result = que.front(); // 此时弹出的元素顺序就是栈的顺序了
    15. que.pop();
    16. return result;
    17. }
    18. };

  • 相关阅读:
    【手把手带你刷好题】Java刷题记录 01—>>08
    【Flutter】widgets (1) 组件概述 widget tree 常见的widgets
    CentOS Nginx crontab 定时执行PHP代码命令任务(tp5.1 tp6 EasyTask) 每天重启执行PHP自定义命令
    10分钟了解数据架构、数据模型
    Hidl Service - Java Service共享内存
    15.项目讲解之前端页面的实现
    map、odom、base_link、laser 的理解 及其 tf 树的理解
    【ROS2原理16】SROS 2 访问控制策略
    iOS开发Swift-12-列表UI,TableViewController,动态响应Button勾选-待办事项App(1)
    一文彻底搞懂Mybatis系列(六)之在WEB应用中使用Mybatis
  • 原文地址:https://blog.csdn.net/weixin_42179093/article/details/133579952
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号