zoukankan      html  css  js  c++  java
  • 20.包含min函数的栈 Java

     

    题目描述

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

    思路

    借助辅助栈实现:
    	压栈时:若辅助栈为空,则将节点压入辅助栈。否则,当当前节点小于等于辅助栈栈顶元素时将节点压入辅助栈。
    	出栈时:若辅助栈和数据栈栈顶元素相同,则同时出栈。否则,只出栈数据栈元素。


    代码

    import java.util.Stack;
    
    public class Solution {
        private Stack stack = new Stack();
        private Stack minStack = new Stack();
        
        
        public void push(int node) {
        	//当辅助栈为空或者当前节点值小于等于辅助栈栈顶元素才压栈
            if(minStack.isEmpty() || node <= (Integer)minStack.peek()){
                minStack.push(node);
            }
            stack.push(node);
        }
        
        public void pop() {
            if(stack.peek()==minStack.peek()){
                minStack.pop();
            }
            stack.pop();
        }
        
        public int top() {
            return (Integer)stack.peek();
        }
        
        public int min() {
            return (Integer)minStack.peek();
        }
    }
  • 相关阅读:
    Linux下的输入/输出重定向
    strcpy与strncpy的区别
    C++的函数重载
    gtest 学习二
    gtest 学习一
    char* wchar* char wchar转换
    iconv 编译不通过问题
    嵌入式常用库
    驱动编程class_create说明
    libiconv 交叉编译
  • 原文地址:https://www.cnblogs.com/feicheninfo/p/10569580.html
Copyright © 2011-2022 走看看