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. }