题解 | #包含min函数的栈#

包含min函数的栈

http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

/**使用一个主栈用来存储数据,一个最小值栈,用来存放最小值。
 *主栈和最小值栈的容量和存储数据量没有必要保持一致。
 */
import java.util.Stack;

public class Solution {
    
    Stack<Integer> stackMain = new Stack<>(); // 主栈,存储所有数据
    Stack<Integer> stackMin = new Stack<>(); // 最小值栈,存储最小值
    
    public Solution() {
        stackMain = new Stack<>();
        stackMin = new Stack<>();
    }

    // 测试主栈和最小值栈是否为空
    public boolean empty() {
        return stackMain.empty() && stackMin.empty();
    }
    
    // 入栈操作,如果主栈和最小值栈都为空,则同时入栈
    // 如果不为空,入栈元素和最小值栈顶部元素对比
    public void push(int node) {
        Stack<Integer> tmp = new Stack<>();
        if (empty()) {
            stackMain.push(node);
            stackMin.push(node);
        }
        stackMain.push(node);
        if (stackMin.peek() >= node)
            stackMin.push(node);
    }
    
    // 出栈操作,先判断出栈元素是否是最小值
    public void pop() {
        if (stackMain.peek() == stackMin.peek())
            stackMin.pop();
        stackMain.pop();
    }
    
    // 返回栈顶元素
    public int top() {
        return stackMain.peek();
    }
    
    // 返回最小值
    public int min() {
        return stackMin.peek();
    }
}


全部评论

相关推荐

10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务