스 택 의 데이터 구 조 를 정의 합 니 다. 이 형식 에서 스 택 에 포 함 된 최소 요 소 를 얻 을 수 있 는 min 함수 (시간 복잡 도 는 O (1) 를 실현 하 십시오.

package com.fiberhome.monitor.task;

import java.util.Stack;

public class SolutionStack {

    private Stack stack = new Stack();//          
    private Stack minStack = new Stack();//    ,   
    private Stack maxStack = new Stack();//    .,   

    public void push(int node) {
        stack.push(node);//     ,   
        if(maxStack.isEmpty() || minStack.isEmpty()){//       ,    
            maxStack.push(node);
            minStack.push(node);
        }else{
            if(node <= minStack.peek()){//        ,    
                minStack.push(node);
            }else if(node >= maxStack.peek()){//        ,    
                maxStack.push(node);
            }
        }

    }

    public void pop() {
        if(stack.peek()==minStack.peek()){//      =       ,       
            minStack.pop();
        }else if(stack.peek() == maxStack.peek()){//      =       ,       
            maxStack.pop();
        }
        stack.pop();//    
    }

    public int top() {
        return  stack.peek();
    }

    public int min() {
        return minStack.peek();
    }

    public static void main(String[] args) {
        SolutionStack stack = new SolutionStack();
        stack.push(5);
        stack.push(3);
        stack.push(7);
        stack.push(4);stack.push(2);stack.push(9);stack.push(1);

        int i = stack.min();
        System.out.println(i);

    }
}

좋은 웹페이지 즐겨찾기