栈与队列|225.用队列实现栈

力扣题目链接

cpp 复制代码
class MyStack {
public:
    queue<int> que;
    /** Initialize your data structure here. */
    MyStack() {

    }
    /** Push element x onto stack. */
    void push(int x) {
        que.push(x);
    }
    /** Removes the element on top of the stack and returns that element. */
    int pop() {
        int size = que.size();
        size--;
        while (size--) { // 将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部
            que.push(que.front());
            que.pop();
        }
        int result = que.front(); // 此时弹出的元素顺序就是栈的顺序了
        que.pop();
        return result;
    }

    /** Get the top element. */
    int top() {
        return que.back();
    }

    /** Returns whether the stack is empty. */
    bool empty() {
        return que.empty();
    }
};

这是c++优化后的解题,只用一个队列求解。

一、出错点

主要是代码实现部分容易出错,思路倒是清晰易懂。

pop()部分则是重点的理解思路

二、理解后的思路

一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

代码随想录 (programmercarl.com)

三、总结

队列和栈的思路还是好理解的,

就是先进先出和先进后出

所以,我们重点要掌握的就是它的代码实现部分~

多敲代码咯!

相关推荐
渡我白衣1 分钟前
深度学习优化算法深入分析:从 SGD 到 LAMB
人工智能·深度学习·算法
十五年专注C++开发2 分钟前
QT 中的元对象系统(六):connect函数详解
开发语言·c++·qt·设计模式·系统架构·qevent
kaikaile19955 分钟前
PHP计算过去一定时间段内日期范围函数
android·开发语言·php
E_ICEBLUE15 分钟前
Python 处理 Word 文档中的批注(添加、删除)
开发语言·python·microsoft·word
earthzhang202119 分钟前
【1008】计算(a+b)/c的值
c语言·数据结构·c++·算法·青少年编程
dlraba80233 分钟前
YOLO 目标检测算法全解析:原理、分类与性能指标
算法·yolo·目标检测
jllllyuz40 分钟前
基于K近邻(KNN)算法的高光谱数据分类MATLAB实现
算法·matlab·分类
勇闯逆流河42 分钟前
【C++】红黑树详解
开发语言·数据结构·c++
Craaaayon1 小时前
【数据结构】二叉树-图解广度优先搜索
java·数据结构·后端·算法·宽度优先
DuHz1 小时前
汽车角雷达波形设计与速度模糊解决方法研究——论文阅读
论文阅读·物联网·算法·汽车·信息与通信·信号处理