您的位置:首页 > 其它

【剑指**】30.包含min函数的栈

2018-03-06 15:16 225 查看

30.包含min函数的栈

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。


思路分析

思路参考书上。

有STL,所以偷懒了,直接调用一下,这样题目就变得简单了

但是有一点要注意, STL 里的 stack。在pop 和 top 时,要记得检查是否为空。否则会出错。

当时在写的时候,自以为 STL 很完善了,判空这种问题肯定会做好了,但是结果就崩溃了。 所以以后当不确定自己调用的函数是否有 check 的时候,自己做一下了,重复检查一下总比崩溃了强,当然这种行为仅适合面试哈

代码

class Solution {
private:
std::stack<int> data_sk;
std::stack<int> help_sk;
public:
void push(int value) {
int min_data = 0;
if (help_sk.empty() || (!data_sk.empty() && data_sk.top() > value)) {
min_data = value;
}
else {
min_data = data_sk.top();
}
data_sk.push(value);
help_sk.push(min_data);
}
void pop() {
if (!data_sk.empty() && !help_sk.empty()) {
data_sk.pop();
help_sk.pop();
}
}
int top() {
if (!data_sk.empty())
return data_sk.top();
else {
return -1;
}
}
int min() {
if (!help_sk.empty())
return help_sk.top();
else {
return -1;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: