栈与队列|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)

三、总结

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

就是先进先出和先进后出

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

多敲代码咯!

相关推荐
NAGNIP39 分钟前
一文搞懂树模型与集成模型
算法·面试
NAGNIP44 分钟前
万字长文!一文搞懂监督学习中的分类模型!
算法·面试
技术狂人1681 小时前
工业大模型工程化部署实战!4 卡 L40S 高可用集群(动态资源调度 + 监控告警 + 国产化适配)
人工智能·算法·面试·职场和发展·vllm
D_FW1 小时前
数据结构第六章:图
数据结构·算法
你怎么知道我是队长1 小时前
C语言---头文件
c语言·开发语言
期待のcode1 小时前
Java虚拟机的运行模式
java·开发语言·jvm
hqwest2 小时前
码上通QT实战25--报警页面01-报警布局设计
开发语言·qt·qwidget·ui设计·qt布局控件
a程序小傲2 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
HellowAmy2 小时前
我的C++规范 - 玩一个小游戏
开发语言·c++·代码规范
自学不成才2 小时前
深度复盘:一次flutter应用基于内存取证的黑盒加密破解实录并完善算法推理助手
c++·python·算法·数据挖掘