IMWeb提升营Day4 | 训练题20:包含min函数的栈
2017-05-28 14:39
232 查看
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。- 解读:实现一个栈,能够得到栈最小元素的min函数,要求复杂度为O(1)
思路
/* * 思路:用两个栈结构来完成这个功能,用一个栈data保存数据,用另外一个栈min保存依次入栈最小的数 * 比如,data中依次入栈,5, 4, 3, 8, 10, 11, 12, 1 则min依次入栈,5, 4, 3,no,no, no, no, 1 * no代表此次不入栈 * 每次入栈的时候,如果入栈的元素比min中的栈顶元素小或等于则入栈,否则不入栈。 */ class Solution { public: stack<int> dataStack; stack<int> minStack; void push(int value) { dataStack.push(value); if(minStack.empty()){ minStack.push(value); }else{ if(minStack.top() > value){ minStack.push(value); } } } void pop() { if(!minStack.empty() && minStack.top() == dataStack.top()){ minStack.pop(); } dataStack.pop(); } int top() { return dataStack.top(); } int min() { return minStack.top(); } };
相关文章推荐
- IMWeb提升营Day7 | 训练题42:和为S的两个数
- IMWeb提升营Day2 | 训练题8:跳台阶
- IMWeb提升营Day2 | 训练题7: 斐波那契数列
- IMWeb提升营Day7 | 训练题40:数组中只出现一次的数字
- IMWeb提升营Day6 | 训练题32:把数组排成最小的数
- 【IMWeb】训练营作业4.19
- IMWeb提升营 —Day3
- 剑指offer-20.包含min函数的栈
- 20包含min函数的栈
- IMWeb提升营Day5 | 训练题30:连续数组的最大和
- IMWeb提升营Day6 | 训练题31:整数中1出现的次数
- 刷题20 包含min函数的栈
- swift UI专项训练20 WebView浏览器
- 剑指offer——20.包含min函数的栈
- 剑指offer(20)—包含min函数的栈
- IMWeb提升营Day6 | 训练题34:第一个只出现一次的字符
- IMWeb提升营Day1 | 训练题1:有序二维数组的查找
- IMWeb提升营Day4 | 训练题22:从上往下打印二叉树
- 剑指Offer面试题20顺时针打印矩阵,面试题21包含min函数的栈
- 剑指Offer_20_包含min函数的栈