您的位置:首页 > Web前端

【剑指offer】包含min函数的栈

2016-06-22 11:03 239 查看
题目:

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

分析:

定义一个的栈用于保存最小值,

每次进栈一个元素就与当前最小值比较,判断是进栈最小值还是当前值,用以保证栈中每个位置对应的都是数据栈数据对应的最小值;

出栈时,数据栈与最小值栈都出栈一个元素,用以保证数据栈与最小值栈最小值的统一。

实现:

import java.util.Stack;

public class Program_21 {
Stack<Integer> data_s = new Stack<Integer>();// 保存元素数据
Stack<Integer> min_s = new Stack<Integer>();// 保存最小值

public void push(int node) {
data_s.push(node);
if (min_s.size() == 0 || node < top()) {
min_s.push(node);
} else {
min_s.push(top());
}
}

public void pop() {
if (data_s.size() != 0 && min_s.size() != 0) {
data_s.pop();
min_s.pop();
}
}

public int top() {
if (min_s.size() == 0) {
return -1;
}
return min_s.peek();
}

public int min() {
if (min_s.size() != 0) {
return top();
}
return -1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息