首页 > 编程语言 >算法训练营第十天|232.用栈实现队列 ,225. 用队列实现栈,20. 有效的括号,1047. 删除字符串中的所有相邻重复项

算法训练营第十天|232.用栈实现队列 ,225. 用队列实现栈,20. 有效的括号,1047. 删除字符串中的所有相邻重复项

时间:2024-10-10 17:21:31浏览次数:1  
标签:20 第十天 队列 pop int que https push

前置知识

  • 栈和队列都是以deque为缺省底部结构,实际上可以自己指定vector,deque,list都可以
  • 栈和队列都被归类为container adapter( 容器适配器)
  • 使用栈实现队列的操作:
    • push(x) -- 将一个元素放入队列的尾部。
    • pop() -- 从队列首部移除元素。
    • peek() -- 返回队列首部的元素。
    • empty() -- 返回队列是否为空。

232.用栈实现队列

文章链接:https://programmercarl.com/0232.用栈实现队列.html
视频链接:https://www.bilibili.com/video/BV1nY4y1w7VC/?spm_id_from=pageDriver&vd_source=6cb513d59bf1f73f86d4225e9803d47b
题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/

class MyQueue {
public:
    stack<int> In;
    stack<int> Out;
    MyQueue() {

    }
    
    void push(int x) {
        In.push(x);
    }
    
    int pop() {   //取加删
        if(Out.empty()){
            while(!In.empty()){
                Out.push(In.top());
                In.pop();
            }
        }
        int result=Out.top();
        Out.pop();
        return result;
    }
    
    int peek() {   //只取不删
        int res=this->pop();
        Out.push(res);
        return res;
    }
    
    bool empty() {
        return In.empty()&&Out.empty();
    }
};

225. 用队列实现栈

文章链接:https://programmercarl.com/0225.用队列实现栈.html
视频链接:https://www.bilibili.com/video/BV1Fd4y1K7sm/?vd_source=6cb513d59bf1f73f86d4225e9803d47b
题目链接:https://leetcode.cn/problems/implement-stack-using-queues/

class MyStack {
    queue<int> que;
public:
    MyStack() {

    }
    
    void push(int x) {
        que.push(x);
    }
    
    int pop() {
        int size=que.size();
        size--;
        while(size--){
            que.push(que.front());
            que.pop();
        }
        int res=que.front();
        que.pop();
        return res;
    }
    
    int top() {
        int res=this->pop();
        que.push(res);//确保数据结构没有发生变化
        return res;
    }
    
    bool empty() {
        return que.empty();
    }
};

20. 有效的括号

文章链接:https://programmercarl.com/0020.有效的括号.html
视频链接:
题目链接:https://leetcode.cn/problems/valid-parentheses/description/

这里我直接用的switch-case结构来写的:

class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        if(s.size()%2!=0) return false;
        for(int i=0;i<s.size();i++){
            switch(s[i]){
                case '{':
                    st.push('}');
                    break;
                case '(':
                    st.push(')');
                    break;
                case '[':
                    st.push(']');
                    break;
                case '}':
                case ']':
                case ')':
                    if(st.empty()||st.top()!=s[i]) return false;
                    if(st.top()==s[i]) st.pop();
                    break;
            }
        }
        return st.empty();
    }
};

1047. 删除字符串中的所有相邻重复项

文章链接:https://programmercarl.com/1047.删除字符串中的所有相邻重复项.html
视频链接:
题目链接:https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/description/

class Solution {
public:
    string removeDuplicates(string s) {
        stack<char> st;      
        for(int i=0;i<s.size();i++){
            if(!st.empty()&&s[i]==st.top()){
                st.pop();
            }
            else st.push(s[i]); 
        }
        string res="";
        while(!st.empty()){
            res+=st.top();
            st.pop();
        }
        reverse(res.begin(), res.end());
        return res;
    }
};

标签:20,第十天,队列,pop,int,que,https,push
From: https://www.cnblogs.com/VickyWu/p/18456800

相关文章

  • 2024激活Typora,最新版本的1.9.5可用
    目前最新版本 1.9.5也是可以实现激活的注:免修改注册表、不用修改时间,更不需要破解补丁01、下载&安装Typora从官网下载最新版本的Typora,并安装02、激活Typora找到Typora安装目录,依次找到这个文件resources\page-dist\static\js\LicenseIndex.**********.********.chunk.js......
  • 2024.9.25 多校 模拟赛
    模拟赛假做法上大分。T1几何bitset优化dp。有空学,先挂个暴力。code#include<bits/stdc++.h>usingnamespacestd;constintN=5e5+5;intT,n,m,t;chars[N],x[55],y[55];unordered_map<int,unordered_map<int,bool>>f[N];unordered_map<int,unordered_map<i......
  • 2024.9.28 模拟赛 CSP6
    模拟赛单\(log\)双\(log\)不如三\(log\)。T1一般图最小匹配简单dp,水。\(O(n^2)\)其实也是可反悔贪心的板子,可以\(O(n\log(n))\)做。考虑排序后求差分数组,就变成不能选相邻的。然后就是可反悔贪心板子。用双向链表(记录前驱后继)维护,然后放进堆里。板dp#include<b......
  • 2024年9月国产数据库大事记-墨天轮
    本文为墨天轮社区整理的2024年9月国产数据库大事件和重要产品发布消息。目录2024年9月国产数据库大事记TOP102024年9月国产数据库大事记(时间线)产品/版本发布兼容认证代表厂商大事记厂商活动相关资料2024年9月国产数据库大事记TOP102024年9月国产数据库大事记(时间线......
  • 20222313 2024-2025-1《网络与系统攻防技术》实验一报告
    1.实验内容本次实践的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个......
  • 2024/10/10
    中山市选2011杀人游戏一个环上的点可以通过询问环上任意一点来确定整个环的状态,有入度的点可以通过询问它之前的点来确定。所以我们先缩点。需要统计出所有入度为\(0\)的强连通分量的个数。注意一个特殊情况,若存在一个强连通分量满足它大小为\(1\),且它连接到的点的入度都不......
  • ChatGPT国内中文版镜像网站整理合集(2024/10/10最新)
    一、GPT中文镜像站①yixiaai.com支持GPT4、4o、o1、文件上传、知识库,支持MJ绘画②chat.lify.vip支持通用全模型,支持文件读取、插件、绘画、AIPPT③AIChat支持GPT3.5/4,4o以及MJ绘画1.什么是镜像站镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。......
  • Android:H2-20:水平仪
    任务描述这里介绍的水平仪就是那种比较传统的水平仪,在一个透明的圆盘中充满某种液体,液体中留有一个气泡,当一端翘起时,该气泡将会浮向翘起的一端。该程序用了一个自定义View,该自定义View很简单,就是绘制透明圆盘和气泡——其中气泡的位置会动态改变。在真机中测试该程序,可看到......
  • 快速排序的非递归实现:借助栈实现、借助队列实现
    目录用栈实现快速排序1.用栈实现非递归快速排序的思路步骤1.1.思路步骤2.用栈实现非递归快速排序的代码3.用栈实现非递归快速排序的整个工程3.1.QuickSortNonR.h3.2.QuickSortNonR.c3.3.Stack.h3.4.Stack.c用队列实现非递归快速排序1.用队列实现非递归快速排序的思......
  • [JOI 2013 Final]彩灯
    [JOI2013Final]彩灯题意给出一个\(01\)序列,可以把一段区间反转。求反转后序列最长的交替子段,即\(010101\ldots\)或\(101010\ldots\)。思路首先发现一个性质,反转的一定是一段交替子段。因为反转不交替子段对答案的贡献不优。枚举反转哪一段交替子段,统计左右两边的......