首页 > 编程语言 >代码随想录算法训练营第10天| 232.用栈实现队列 ● 225. 用队列实现栈

代码随想录算法训练营第10天| 232.用栈实现队列 ● 225. 用队列实现栈

时间:2023-09-15 21:12:33浏览次数:55  
标签:10 return 队列 随想录 pop int que result stackOut

栈和队列

232.用栈实现队列

stack:

queue:

卡哥代码

一个入栈,一个出栈,即可模拟队列的pop操作

  • pop之前要检查出栈是否为空
    • 若为空,则排出入栈里所有的元素至出栈中
class MyQueue {
public:
    stack<int> stackIn;
    stack<int>  stackOut;
    
    MyQueue() {

    }
    
    void push(int x) {
        stackIn.push(x);
    }
    
    int pop() {
        if(stackOut.empty()){
            while( !stackIn.empty() ){
                stackOut.push(stackIn.top());
                stackIn.pop();
            }
        }
        int result = stackOut.top();
        stackOut.pop();
        return result;
        //return stackOut.pop();    //报错,因为标准的pop是void类型
    }
    
    int peek() {
        int result = this->pop();
        stackOut.push(result);
        return result;
    }
    
    bool empty() {
        return stackIn.empty() && stackOut.empty();
    }
};

225.用队列实现栈

queue:

卡哥代码

单队列法

class MyStack {
public:

    queue<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();

        //简单写法
        // return this->back(); //报错:no member named 'back' in 'MyStack'
        
        /*我的写法
        int result = this->pop();
        this->push(result);
        return result;
        */ 
    }
    
    bool empty() {
        return que.empty();
    }
};

标签:10,return,队列,随想录,pop,int,que,result,stackOut
From: https://www.cnblogs.com/lycnight/p/17705925.html

相关文章

  • 3 - 任务调度算法 & 同步与互斥 &队列
    之前的都是按照优先级不同允许抢占(不讲道理),不管你在做什么,轮到优先级最高的任务,直接抢占执行怎样才能讲道理呢?稍微等等嘛,等我做完活你再做 1支持抢占,0不支持抢占 同优先级任务是否交替执行,1交替0不交 空闲任务是否礼让其他任务礼让的话,自己的函数逻辑在时间片内只执行......
  • 洛谷题解 | P1046 陶陶摘苹果
    ​目录题目描述输入格式输出格式输入输出样例说明/提示题目思路AC代码题目描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现......
  • Educational Codeforces Round 100
    B.FindTheArray对于条件二来说,1是万金油的存在,所以我们只需要把奇数位置或偶数位置全部变成1即可。因为要求差值小于\(\fracs2\),所以我可以求出奇偶位的和修改较小值即可。#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongusingpii=pair<in......
  • 【代码随想录算法训练营第二天】977.有序数组的平方、209.长度最小的子数组 、59.螺旋
    Day2-数组2023.9.15Leetcode977有序数组的平方给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。初解我还是不能想到暴力解法之外的,对某个问题的最优复杂度也没有概念。就算提示我是用指针,我也想不到思路。现在我知......
  • 揭秘10个Chat Emy兼职赚钱策略
    在当今数字时代,创造一个有利可图的副业从未如此便利。随着科技的发展,强大的AI语言模型ChatEmy为那些希望增加额外收入的个人开辟了新的途径。在这份全面的指南中,我们将探讨利用ChatEmy潜力的十种巧妙策略,打造您自己的副业帝国。1、利用ChatEmy进行特定领域创作将Cha......
  • 2023 Bonree ONE 秋季产品发布会,10月20日 深圳见!
    ......
  • 2023.9.15 CF gym 104369 vp
    The2023GuangdongProvincialCollegiateProgrammingContesthttps://codeforces.com/gym/104369A枚举并判断即可。B注意到相邻的基站中不能有完整的区间,我们可以双指针求出最小的\(p_i\),使得\([p_i,i]\)中没有完整的区间。然后单调队列即可。C贪心,把最小的卖到最......
  • GYM 104128 G
    G.Inscryption根据题意,需要把输入的\(0\)全部转换为\(1\)或\(-1\),使得\(p\overq\)最大。当\(a[i]=1\)时,\({p\overq}={p'+1\overq'+1}\)当\(a[i]=-1\)时,\({p\overq}={p'\overq'-1}\)通过计算,可知当\(q>2*p+1\)时,\(a[i]=1\)时的收益大于\(a[i]=......
  • Ubuntu 10.04 安装Twisted、Scrapy爬虫框架
    Ubuntu10.04安装Twisted、Scrapy爬虫框架Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结ScrapyPython爬虫框架logo[1]构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个......
  • day1 C语言:对于P1055 ISBN号码的代码优化及多解
    day1C语言:对于P1055ISBN号码的代码优化及多解先看题目 直接说最优解,其他方法后置 第一部分1.第一个点是数据的输入,本人第一的想法是直接用int类型去接受数据,但因为“-”的存在,在取得各位数字时会用到复杂循环和取余计算,所以这里用到char类型输入数据去取得各个位上的......