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

来源:互联网 发布:淘宝为什么得2张银行卡 编辑:程序博客网 时间:2024/05/14 05:59

题目:

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的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;}}


0 0