包含min函数的栈
2017-02-27 21:13
176 查看
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数,在该栈中,调用min、push以及pop的时间复杂度都是O(1)。
算法思想:定义一个数据栈,一个辅助栈。数据栈用于常规的数据进出栈操作,而辅助栈用于最小值元素的进出栈操作。
实现代码:
import java.util.Stack;
public class Solution {
Stack<Integer> data = new Stack<>();
Stack<Integer> min = new Stack<>();
Integer temp = null;
public void push(int node) { //当辅助栈为空时,第一个元素进栈;接着遍历,当遍历的下一个元素小于辅助栈的栈顶元素时,该元素进栈;否则,辅助栈栈顶的元
if(min.empty()){ //否则,辅助栈栈顶元素进行重复进栈操作
min.push(node);
}else if(node <= min.peek()){
min.push(node);
}else{
min.push(min.peek());
}
data.push(node);
}
public void pop() {
data.pop();
min.pop();
}
public int top() {
if(data.empty()){
throw new RuntimeException("your stack is empty!");
}
return data.peek();
}
public int min() {
if(min.empty()){
throw new RuntimeException("your stack is empty!");
}
return min.peek();
}
}
算法思想:定义一个数据栈,一个辅助栈。数据栈用于常规的数据进出栈操作,而辅助栈用于最小值元素的进出栈操作。
实现代码:
import java.util.Stack;
public class Solution {
Stack<Integer> data = new Stack<>();
Stack<Integer> min = new Stack<>();
Integer temp = null;
public void push(int node) { //当辅助栈为空时,第一个元素进栈;接着遍历,当遍历的下一个元素小于辅助栈的栈顶元素时,该元素进栈;否则,辅助栈栈顶的元
if(min.empty()){ //否则,辅助栈栈顶元素进行重复进栈操作
min.push(node);
}else if(node <= min.peek()){
min.push(node);
}else{
min.push(min.peek());
}
data.push(node);
}
public void pop() {
data.pop();
min.pop();
}
public int top() {
if(data.empty()){
throw new RuntimeException("your stack is empty!");
}
return data.peek();
}
public int min() {
if(min.empty()){
throw new RuntimeException("your stack is empty!");
}
return min.peek();
}
}
相关文章推荐
- 剑指offer(17)-包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈和两个栈实现一个队列
- 【剑指offer】包含min函数的栈
- 数据结构面试题1.2.3-设计包含min函数的栈[数据结构]
- 包含min函数的栈
- 剑指offer - 包含min函数的栈
- 经典面试题:设计包含min函数的栈,O(1)空间实现方法
- 剑指offer第二十题【包含min函数的栈】c++实现
- 剑指offer:包含min函数的栈
- 牛客网-《剑指offer》-包含min函数的栈
- 包含min函数的栈
- 程序员面试题精选100题(02)-设计包含min函数的栈[数据结构]
- 面试题21 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 设计包含min函数的栈
- Python实现包含min函数的栈