博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
30 包含min函数的栈(举例让抽象问题具体化)
阅读量:5235 次
发布时间:2019-06-14

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

题目描述:

定义栈的数据结构(push/pop),请在该类型中实现一个能够得到栈中所含最小元素的min函数(三者的时间复杂度都应为O(1))。

 

测试用例:

 1)新压入栈的数字比之前的最小值大/小

 2)弹出的数字不是最小的元素/是最小的元素

 

解题思路:

1)借助辅助栈存储最小值,辅助栈顶一定都当前栈的最小值

class Solution {public:    void push(int value) {        if(data.empty()){            data.push(value);            minValue.push(value);  // 是一样的A        }else{ //不为空的时候要寻找最小值,添加到辅助栈中            data.push(value);            if(value
0 && minValue.size()>0); if(data.empty()) return; data.pop();//用判断栈为空么?? minValue.pop(); } int top() { //访问数据栈顶 return data.top(); } int min() { //访问辅助栈顶 考虑栈为空的时候 //assert(data.size()>0 && minValue.size()>0); if(data.empty()) return; //实际上应该报错 return minValue.top(); } private: stack
data; stack
minValue;};

2)使用key-value对存储

class Solution {    typedef pair
pii; stack
s;public: void push(int value) { s.push(pii(value, ::min(value, s.empty() ? value : min()) )); //min()是自己定义的函数s.top().second; } void pop() { s.pop(); } int top() { return s.top().first; } int min() { return s.top().second; }};

  

  

 

转载于:https://www.cnblogs.com/GuoXinxin/p/10449574.html

你可能感兴趣的文章
阅读软件工程的问题
查看>>
【Netty】UDP广播事件
查看>>
(4)Numpy+矩阵计算+和生成
查看>>
ttt
查看>>
[置顶] java处理office文档与pdf文件(一)
查看>>
Flutter之内置动画(转)
查看>>
MySql优化相关概念的理解笔记
查看>>
数据库解决方案
查看>>
备份U盘分区表,未雨绸缪
查看>>
Eclipse配置 自动补全功能 快捷键 alt+/
查看>>
抖动效果
查看>>
DataContract和DataMember的作用
查看>>
来自XP的道别信
查看>>
js如何获取response header信息
查看>>
python_文件的打开和关闭
查看>>
mysql archive存储引擎导入数据报duplicate key
查看>>
ADO.NET介绍
查看>>
iOS: 数据持久化方案
查看>>
【C#】【Thread】Monitor和Lock
查看>>
UVALive - 3635 - Pie(二分)
查看>>