题解 | #包含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();
    }
}


全部评论

相关推荐

那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务