博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode] Min Stack 最小栈
阅读量:6605 次
发布时间:2019-06-24

本文共 1333 字,大约阅读时间需要 4 分钟。

Implement a stack with min() function, which will return the smallest number in the stack.

It should support push, pop and min operation all in O(1) cost.

 Notice

min operation will never be called if there is no number in the stack.

Example
push(1)pop()   // return 1push(2)push(3)min()   // return 2push(1)min()   // return 1

LeetCode上的原题,请参见我之前的博客.

解法一:

class MinStack {public:    MinStack() {}    void push(int number) {        m1.push(number);        if (m2.empty() || m2.top() >= number) {            m2.push(number);        }    }    int pop() {        if (m1.empty()) return -1;        int t = m1.top(); m1.pop();        if (!m2.empty() && m2.top() == t) m2.pop();        return t;    }    int min() {        if (!m2.empty()) return m2.top();        return -1;    }private:    stack
m1, m2;};

解法二:

class MinStack {public:    MinStack():mn(INT_MAX) {}    void push(int number) {        if (number <= mn) {            s.push(mn);            mn = number;        }        s.push(number);    }    int pop() {        int t = s.top(); s.pop();        if (t == mn) {            mn = s.top(); s.pop();        }        return t;    }    int min() {        return mn;    }private:    int mn;    stack
s;};

本文转自博客园Grandyang的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
iOS网络篇2-http协议通信规则
查看>>
删除sql dump中的AUTO_INCREMENT
查看>>
使用JdbcTemplate和JdbcDaoSupport
查看>>
C博客作业--指针
查看>>
版本12.2.0.1.0数据库,复制种子数据库快速创建租户数据库PDB
查看>>
吴忠军中华演出网
查看>>
Page翻页分页css代码,分页div+css代码
查看>>
编程之美 第1章 游戏之乐——游戏中碰到的题目(十一)
查看>>
mysql for Mac 下创建数据表中文显示为?的解决方法
查看>>
2016阿里巴巴73款开源产品全向图
查看>>
Glibc 和 uClibc
查看>>
VMware 虚拟机的虚拟磁盘编程知识点扫盲之二
查看>>
vs2012中自带IIS如何让其他电脑访问
查看>>
关于termux在手机上搭载Linux系统,python,ssh
查看>>
Redux:异步操作
查看>>
Mysql学习第三课-分析二进制日志进行增量备份和还原
查看>>
2-11
查看>>
Appium IOS
查看>>
POJ1961 Period [KMP应用]
查看>>
CSS hack
查看>>