【剑指Offer】面试题21:包含min函数的栈
来源:互联网 发布:济南seo外包公司 编辑:程序博客网 时间:2024/04/30 01:55
思路整理自剑指Offer
一:题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
二:解题思路
刚看时读题,并没有很清楚的理解题目的意思,看了解析后才明白,题目的意思可简单理解为:
一批数据入栈后,你可以获得这批数据的最小值,可以更改push(),pop(),top()函数和新建的min()函数实现
可以借助辅助栈,利用空间换时间,实现时间复杂度为O(1)的方法
以例子说明,加入将3,4,2,1压栈,求栈中元素最小值
定义一个辅助栈,与原始栈同时出栈入栈,区别在于辅助栈每次都把最小值压入栈,那么就可以保证,辅助栈栈顶一直都是最小元素。
三:代码实现
class Solution {public: //需要自己定义栈,以及辅助栈 stack<int> data; //存放数据 stack<int> min_data; //存放data中的最小值,min_data大小等于data大小 void push(int value) { //新元素入栈 data.push(value); //如果min_data为空,新元素入栈 if(min_data.size()==0) min_data.push(value); //如果min_data不为空否则, else{ //value小于min_data栈顶元素,入栈, if(value<=min_data.top()) min_data.push(value); else{ //value小于min_data栈顶元素,说明当前min_data的栈顶元素是data中的最小值,再将min_data栈顶元素入栈 int topValue=min_data.top(); min_data.push(topValue); } } } //弹栈,获得栈顶元素,获得栈的最小值,都是对原始栈而言的 void pop() { data.pop(); min_data.pop(); } int top() { return data.top(); } int min() { return min_data.top(); }};
阅读全文
0 0
- [剑指offer][面试题21]包含min函数的栈
- 剑指offer 面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 剑指Offer:面试题21 包含min函数的栈
- 剑指offer 面试题21 包含min函数的栈
- 《剑指Offer》面试题21:包含min函数的栈
- 剑指offer面试题21-包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指Offer----面试题21:包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指offer面试题21:包含min函数的栈
- 剑指Offer面试题21:包含min函数的栈
- 剑指offer--面试题21:包含min函数的栈
- 剑指Offer---面试题21:包含min函数的栈
- 剑指offer-面试题21-包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 【面试题】剑指Offer-21-包含Min函数的栈
- webpack基础入门
- Linux命令行—管理进程/获取磁盘统计信息
- 事务与aop
- 链队列的初始化、入队、出队及打印(数据结构)
- MOOC清华《程序设计基础》第6章第1题:n级台阶问题(递归法)
- 【剑指Offer】面试题21:包含min函数的栈
- 自己对html、css、javascript的看法
- D-POJ-3126 Prime Path
- int 和Integer的区别
- 常见的四种tcp定时器
- Python学习笔记——装饰器
- 网页布局中的一些水平居中上下剧中的方法
- IIS和Tomcat共用80端口的解决方案
- 内联函数和宏定义的差别