栈——OJ题

在这里插入图片描述


📘北尘_个人主页

🌎个人专栏:《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》

☀️走在路上,不忘来时的初心


一、最小栈

1、题目讲解

在这里插入图片描述

2、思路讲解

在这里插入图片描述

3、代码实现

class MinStack {
   
public:
    MinStack() {
   }
    
    void push(int val) {
   
        st.push(val);
        if(minst.empty() || st.top()<=minst.top())
        {
   
            minst.push(val);
        }
    }
    
    void pop() {
   
        if(st.top()==minst.top())  
        {
   
             minst.pop();
        }
       
        st.pop();


    }
    
    int top() {
   
        return st.top();
    }
    
    int getMin() {
   
        return minst.top();

    }
    stack<int> st;
    stack<int> minst;
};

二、栈的压入、弹出序列

1、题目讲解

在这里插入图片描述

2、思路讲解

在这里插入图片描述

3、代码实现

bool IsPopOrder(vector<int>& pushV, vector<int>& popV) 
    {
   
        stack<int> s;
        int pushi=0,popi=0;
        for(auto ch:pushV)
        {
   
            s.push(pushV[pushi]);
            pushi++;
            while(!s.empty() && s.top()==popV[popi])
            {
   
                s.pop();
                popi++;
            }
        }
        return s.empty();
    }

三、逆波兰表达式求值

1、题目讲解

在这里插入图片描述

2、思路讲解

在这里插入图片描述

3、代码实现

class Solution {
   
public:
    int evalRPN(vector<string>& tokens) {
   
        stack<int> s;
        for(auto& ch:tokens)
        {
   
            if(ch=="+" || ch=="-" || ch=="*" || ch=="/" )
            {
   
                int right=s.top();
                s.pop();
                int left=s.top();
                s.pop();
                switch(ch[0])
                {
   
                    case '+':
                    s.push(left+right);
                    break;

                    case '-':
                    s.push(left-right);
                    break;

                    case '*':
                   s.push(left*right);
                    break;

                    case '/':
                   s.push(left/right);
                    break;  
                }
            }
            else
            {
   
                s.push(stoi(ch));
            }
        }

        return s.top();

    }
};

相关推荐

  1. 每日OJ_⑤_力扣946. 验证序列

    2023-12-20 15:34:03       17 阅读
  2. C++ <span style='color:red;'>栈</span><span style='color:red;'>OJ</span>

    C++ OJ

    2023-12-20 15:34:03      17 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-20 15:34:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-20 15:34:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-20 15:34:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-20 15:34:03       18 阅读

热门阅读

  1. Vue Teleport和Vue的介绍

    2023-12-20 15:34:03       38 阅读
  2. 【算法】【动规】摆动序列

    2023-12-20 15:34:03       45 阅读
  3. excel技巧

    2023-12-20 15:34:03       39 阅读
  4. 【.Net 6.0--通用帮助类--总览】

    2023-12-20 15:34:03       47 阅读
  5. Spark报错:顶级Product编程

    2023-12-20 15:34:03       42 阅读
  6. Docker 如何删除所有没有名字的镜像

    2023-12-20 15:34:03       40 阅读
  7. vue3虚拟dom和diff算法实现(模仿源码)

    2023-12-20 15:34:03       34 阅读
  8. npm run build Last few GCs

    2023-12-20 15:34:03       42 阅读
  9. 华纳云:Ubuntu下LAMP环境如何配置

    2023-12-20 15:34:03       36 阅读