包含min函数的栈

来源:互联网 发布:精通nginx 第二版 pdf 编辑:程序博客网 时间:2024/06/03 21:25

题目描述

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

编程思路

准备两个栈,一个是数据栈,一个是辅助栈,首先往数据栈中压入数字,然后每次把压入数据栈的数字的最小值压入辅助栈中,那么辅助栈的栈顶就一直都是最小元素。当最小元素从数据栈内被弹出来之后,同时弹出辅助栈的栈顶元素,此时,辅助栈的新栈顶元素就是下一个最小值。如下表是栈内压入3,4,2,1,之后两次弹出栈顶数字再压入0时,数据栈、辅助栈和最小值的状态:

这里写图片描述
这里写图片描述

程序代码(Java语言)

import java.util.Stack;public class Solution {Stack<Integer> m_data = new Stack<Integer>();Stack<Integer> m_min = new Stack<Integer>();            public void push(int node) {        m_data.push(node);        if(m_min.size() == 0 || node < m_min.peek())           m_min.push(node);        else            m_min.push(m_min.peek());    }        public void pop() {        m_data.pop();        m_min.pop();    }        public int top() {        return m_data.peek();    }        public int min() {        return m_min.peek();    }}




原创粉丝点击