zoukankan      html  css  js  c++  java
  • 剑指offer-包含min函数的栈

    题目描述

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

    思路

    把每次的最小元素(之前的最小元素和新压入战的元素两者的较小值)都保存起来放到另外一个辅助栈里。

    如果每次都把最小元素压入辅助栈, 那么就能保证辅助栈的栈顶一直都是最小元素.当最小元素从数据栈内被弹出之后,同时弹出辅助栈的栈顶元素,此时辅助栈的新栈顶元素就是下一个最小值。

     Stack<Integer> dataStack = new Stack<Integer>();  // 数据栈
        Stack<Integer> minStack = new Stack<Integer>();   // 辅助栈
        
        public void push(int node) {
            dataStack.push(node);
            if(minStack.isEmpty() || minStack.peek() > node ) {
                minStack.push(node);
            } else {
                minStack.push(minStack.peek());
            }  
        }
        
        public void pop() {
            if(!dataStack.isEmpty() && !minStack.isEmpty()) {
                dataStack.pop();
                minStack.pop();
            }
        }
    
        public int min() {
            int min = 0;
            if(!dataStack.isEmpty() && !minStack.isEmpty()) {
                min = minStack.peek();
            }
            return min;
        }
  • 相关阅读:
    CCF_2014_09_2_画图
    计蒜课_等和分隔子集
    计蒜客_合法分数的组合
    读构建之法的读书笔记
    四则运算及感想
    psp 第二周
    第二周 词频统计
    历年作品点评
    四人小组项目
    品读《构建之法》及几个问题的提出
  • 原文地址:https://www.cnblogs.com/zywu/p/5775098.html
Copyright © 2011-2022 走看看