N05、用两个栈来实现一个队列 (很简单的一道题)

5、 用两个栈来实现一个队列

完成队列的Push和Pop操作。 队列中的元素为int类型。

1、很简单的一道题

运行时间:3ms 占用内存:376k

public:
    void push(int node) {
        stack1.push(node);
    }

    int pop() {
        while(stack1.size() != 1){
            stack2.push(stack1.top());
            stack1.pop();

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

带你刷完67道剑指offer 文章被收录于专栏

- 本专栏汇集了67道剑指offer的一些精妙解法,不少题有5-6种解法之多,有些题目二刷三刷的解法也不一样。 - 本专栏帮助我拿到6个互联网大厂offer,最终圆梦字节跳动公司。

全部评论
两个栈实现一个队列有不止这一种方法,楼主可以多分享一些方法吗?
1 回复 分享
发布于 2021-01-24 22:30
思路:两个栈,让其中的一个栈作为队列出队。 具体实现: 步骤1:stack1的全部栈元素,全部压到stack2中,那么stack2的栈顶元素就是队列的队头,保存弹出。 然后将stack2的全部栈元素,全部压到stack1中,然后重复步骤1。 代码实现: class Solution { void push(int node) { stack1.push(node); } void two_stack_change(stack<int> &s1,stack<int> &s2) { while(s1.()) { s2.push(s1.top()); s1.pop(); } } int pop() { two_stack_change(stack1,stack2); int node = stack2.top(); stack2.pop(); two_stack_change(stack2,stack1); return node; } private: stack<int> stack1; stack<int> stack2; };</int></int></int></int>
点赞 回复 分享
发布于 2021-03-08 11:48
看过其他方法,也不错
点赞 回复 分享
发布于 2021-02-13 13:55

相关推荐

评论
3
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务