最小栈问题

mac2022-06-30  18

import java.util.Stack; public class MinStack { Stack<Integer> normal = new Stack<>(); Stack<Integer> min = new Stack<>(); public MinStack() {} //normal与min中元素个数保持一样,即便新进来normal中的值较大,min还要 //把当前最小值在更新一遍; public void push(int x) { normal.push(x); if (min.empty()) { min.push(x); } else { int m = min.peek(); if (x <= m) { min.push(x); } else { min.push(m); } } } public void pop() { normal.pop(); min.pop(); } //方法二 //若新进来的数是大数,则min保持不动,除非比当前最小的还小,才插入min /** * public void push(int x){ * normal=push.(x); * if(min.empty()){ * min.push(x); * }else{ * int m=min.peek(); * if(x<m){ * min.push(x); * } * } * } * public void pop(){ * if(normal.peek()!=min.peek()){ * normal.pop(); * }else{ * normal.pop(); * min.pop(); * } * } */ public int top() { return normal.peek(); } public int getMin() { return min.peek(); } }

 

最新回复(0)