包含min函数的栈

包含min函数的栈

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

注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。


这个问题使用双栈法,一个栈用来放数据,一个栈用来放过往的最小值

import java.util.Stack;

public class Solution {
    Stack<Integer>minimum=new Stack<Integer>();
    Stack<Integer>theStack=new Stack<Integer>();
    public void push(int node) {
        if(minimum.isEmpty()||minimum.peek()>=(Integer)node){
            minimum.push((Integer)node);
        }
        theStack.push((Integer)node);
    }
    
    public void pop() {
        if(minimum.peek()==theStack.peek()){
            minimum.pop();
        }
        theStack.pop();
    }
    
    public int top() {
        return (int)theStack.peek();
    }
    
    public int min() {
        return (int)minimum.peek();
    }
}

要点:

  1. java容器中只能放包装类。例如Integer是可以的,int则不行
  2. java的栈Stack中查看顶部元素的方法叫peek()而不是top()
posted @ 2020-03-02 17:37  别再闹了  阅读(38)  评论(0)    收藏  举报