剑指Offer--021-支持min操作的栈
来源:互联网 发布:手机金山数据恢复大师 编辑:程序博客网 时间:2024/06/05 16:00
链接
牛客OJ:支持min操作的栈
九度OJ:http://ac.jobdu.com/problem.php?pid=1522
GitHub代码: 021-包含min函数的栈
CSDN题解:剑指Offer–021-包含min函数的栈
您也可以选择回到目录-剑指Offer–题集目录索引
题意
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
分析
思路很简单,我们维持两个栈,
数据栈data,存储栈的数据用于常规的栈操作
最小栈min,保存每次push和pop时候的最小值,
在push-data栈的时候,将当前最小数据压入,
在pop-data栈的时候,将min栈栈顶的最小数据弹出
这样保证min栈中存储着当前现场的最小值,并随着数据栈的更新而更新
class Solution{public: void push(int value) { this->m_data.push(value);// if(this->m_min.size( ) <= 1)// {// this->m_min.push(value);// }// int min_data = MIN(value, this->m_min.top( ));// this->m_min.push(min_data); if(this->m_min.size( ) == 0 || value < this->m_min.top( )) { this->m_min.push(value); } else { this->m_min.push(this->m_min.top( )); } } void pop() { assert(this->m_data.size( ) > 0 && this->m_min.size( ) > 0); this->m_data.pop( ); this->m_min.pop( ); } int top() { assert(this->m_data.size( ) > 0 && this->m_min.size( ) > 0); return this->m_data.top( ); } int min() { if(this->m_data.empty( ) == true) { return 0; } return this->m_min.top( ); }protected: stack<int> m_data; // 数据栈 stack<int> m_min; // 存储每次栈中最小值的栈信息};
0 0
- 剑指Offer--021-支持min操作的栈
- 【剑指offer】包含min函数的栈
- 剑指offer--包含min函数的栈
- 剑指Offer-->包含min函数的栈
- 《剑指offer》包含min函数的栈
- 剑指offer - 包含min函数的栈
- 剑指offer-包含min函数的栈
- 剑指offer:包含min函数的栈
- 包含min函数的栈|剑指offer
- 剑指offer-包含min函数的栈
- 剑指offer 包含min函数的栈
- 剑指offer:包含min函数的栈
- 剑指offer 包含min函数的栈
- [剑指offer]包含min函数的栈
- 《剑指offer》-包含min函数的栈
- 剑指offer----包含min函数的栈
- 【剑指offer】包含min函数的栈
- 剑指offer|包含min函数的栈
- springMVC+freeMarker表单验证
- mac上使用genymotion
- Windbg实用手册
- 仿QQ底部退出弹出框
- 递归转换循环
- 剑指Offer--021-支持min操作的栈
- 八皇后(N皇后)问题算法程序(回溯法)
- 1013-A strange lift
- linux切换多版本的php
- OAuth2学习笔记(2)——角色
- 程序源入坑之路1
- 模板方法模式
- PHP,ASP,JSP的区别
- 程序员技术提升攻略