LeetCode0155-最小栈

用两个栈实现最小栈功能

package codepackage;

import java.util.Deque;
import java.util.LinkedList;

public class Num155_minStack {

    LinkedList<Integer> minlist;
    LinkedList<Integer> norlist;


    /** initialize your data structure here. */
    public Num155_minStack() {
// 需要初始化两个list,不然就会空指针,因为只通过定义成员变量并没有分配内存空间
        minlist = new LinkedList<Integer>();
        norlist = new LinkedList<Integer>();
        minlist.push( Integer.MAX_VALUE);

    }


//    public void push(int val) {
//        int min=0;
//        norlist.push(val);
//        if(norlist.size()==1){
//            min= val;
//        }
////       这里对比不对,应该是val与minlist的peak值进行对比
////      min = Math.min(val,norlist.peek());
//        minlist.push(min);
//
//    }

    public void push(int val) {

        norlist.push(val);
        int min = Math.min(val,minlist.peek());
        minlist.push(min);

    }

    public void pop() {

        norlist.pop();
        minlist.pop();

    }

    public int top() {

        return (int)norlist.peek();

    }

    public int getMin() {
        return (int)minlist.peek();

    }
}

 测试调用

public static void main(String[] args) {
        Num155_minStack minStack = new Num155_minStack();
        minStack.push(-2);
        minStack.push(0);
        minStack.push(-3);
        minStack.getMin();   //--> 返回 -3.
        minStack.pop();
        minStack.top();      //--> 返回 0.
        System.out.println(minStack.getMin());   //--> 返回 -2.

    }

 

posted on 2021-06-30 10:29  cStream  阅读(27)  评论(0)    收藏  举报