包含min函数的栈
2016-06-18 10:59
274 查看
题目:包含min函数的栈
思路:这个问题的解决方法很多,这里举出一种比较好理解的方法,即使用两个栈实现。
mystack
minstack
minstack的存放规则是:如果找到一个最小值,则将该值放入栈中,下一次push的值和他进行对比,若比它大,则仍然压入该栈顶的值,否则压入新的较小值。
这样做的好处是,每次弹出时,将会很容易操作。
class Solution {
public:
void push(int value) {
mystack.push(value);
if(minstack.empty()){
minstack.push(value);
}
else if(minstack.top()>value){
minstack.push(value);
}
else{
int temp=minstack.top();
minstack.push(temp);
}
}
void pop() {
mystack.pop();
minstack.pop();
}
int top() {
return mystack.top();
}
int min() {
return minstack.top();
}
private:
stack<int> mystack;
stack<int> minstack;
};
思路:这个问题的解决方法很多,这里举出一种比较好理解的方法,即使用两个栈实现。
5 |
1 |
4 |
2 |
3 |
1 |
1 |
2 |
2 |
3 |
minstack的存放规则是:如果找到一个最小值,则将该值放入栈中,下一次push的值和他进行对比,若比它大,则仍然压入该栈顶的值,否则压入新的较小值。
这样做的好处是,每次弹出时,将会很容易操作。
class Solution {
public:
void push(int value) {
mystack.push(value);
if(minstack.empty()){
minstack.push(value);
}
else if(minstack.top()>value){
minstack.push(value);
}
else{
int temp=minstack.top();
minstack.push(temp);
}
}
void pop() {
mystack.pop();
minstack.pop();
}
int top() {
return mystack.top();
}
int min() {
return minstack.top();
}
private:
stack<int> mystack;
stack<int> minstack;
};
相关文章推荐
- C++基于栈实现铁轨问题
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- Array栈方法和队列方法的特点说明
- java数据结构之java实现栈
- 浅析栈区和堆区内存分配的区别
- 用Java代码实现栈数据结构的基本方法归纳
- 用PHP解决的一个栈的面试题
- 浅谈C#中堆和栈的区别(附上图解)
- JavaScript数据结构与算法之栈详解
- C语言之栈和堆(Stack && Heap)的优缺点及其使用区别
- Python实现栈的方法
- JavaScript数组的栈方法与队列方法详解
- JavaScript数据结构与算法之栈与队列
- JavaScipt中栈的实现方法
- Java中堆和栈的区别详解
- 详解Java的堆内存与栈内存的存储机制
- java中堆和栈的区别分析