您的位置:首页 > 理论基础 > 数据结构算法

包含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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息