首页 > 其他分享 >剑指 Offer 30. 包含min函数的栈

剑指 Offer 30. 包含min函数的栈

时间:2023-01-11 16:00:36浏览次数:35  
标签:minStack Offer int top 30 min push MinStack

剑指 Offer 30. 包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

 

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.min();   --> 返回 -2.
 

提示:

各函数的调用总次数不超过 20000 次

储存当前最小值即可

class MinStack {
public:
    /** initialize your data structure here. */

    struct data{
        int val;
        int min;
    };

    stack<struct data>s;

    MinStack() {
        
    }
    
    void push(int x) {
        struct data node;
        node.val=x;
        if(s.empty()){
            node.min=x;
            s.push(node);
            return;
        }
        node.min=s.top().min>x?x:s.top().min;
        s.push(node);
    }
    
    void pop() {
        s.pop();
    }
    
    int top() {
        return s.top().val;
    }
    
    int min() {
        return s.top().min;
    }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(x);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->min();
 */

标签:minStack,Offer,int,top,30,min,push,MinStack
From: https://www.cnblogs.com/SkyDusty/p/17044032.html

相关文章

  • 剑指 Offer 09. 用两个栈实现队列
    剑指Offer09.用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数......
  • oh-admin诞生记
    创建基础项目基于vite创建初始模板选择vue+ts后期再安装依赖less支持输入以下命令回车yarncreatevite交互中选择vuets项目初始化完成后安装less即可支持les......
  • 电子设计教程30:温度滞回控制系统
      本节我们用滞回比较器的原理,设置一个温度滞回控制系统,让散热风扇在温度高于40℃时启动,在温度低于25℃时停止。  我用的温度传感器应用的是TPM235,在温度大于0℃的时候......
  • xmind8使用甘特图与导出甘特图PDF
    1新建思维导图2打开甘特图视图3填写甘特图信息4导出甘特图PDF......
  • 如何用 30s 给面试官讲清楚什么是 Token
    引言前文介绍了Session-Cookie的认证过程,简单回顾下基本步骤:客户端(浏览器)向服务器发送用户名和密码服务器验证通过后,创建Session对象,在Session中保存该用户相关......
  • 230110_50_RPC底层原理
    最终版本,利用hessian实现rpc调用HessianUtilpackagecom.bill.rpc10;importcom.caucho.hessian.io.Hessian2Input;importcom.caucho.hessian.io.Hessian2Output;......
  • 无聊猿最大mint数量
    require("dotenv").config();constmain=async()=>{letcontractAddress="0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D";letcontractABI=[{"inputs......
  • pycharm:无法加载文件 C:\Users\admin\PycharmProjects\pythonProject1\venv\Scr
    以前一直在vmware虚机上用pycharm,这次想在win10pc上试试 安装pycharm后,打开终端直接报错:无法加载文件C:\Users\admin\PycharmProjects\pythonProject1\venv\Scripts......
  • docker 部署minio
     1dockerpullminio/minio:RELEASE.2022-08-26T19-53-15Z2 dockerrun-p9000:9000-p9090:9090\--net=host\--nameminio\-d--restart=alway......
  • react-native启动时报错Could not determine the dependencies of task ':app:preDebu
    报错如下:需要修改node_module中的@react-native-community/viewpager文件,如下:再次启动即可。......