首页 > 代码库 > [Leetcode] Min Stack
[Leetcode] Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
Solution:
用两个stack,一个stack用来存储值,一个stack用来维护在当前栈中的最小值。
1 class MinStack { 2 Stack<Integer> vals=new Stack<Integer>(); 3 Stack<Integer> mins=new Stack<Integer>(); 4 public void push(int x) { 5 vals.push(x); 6 if(!mins.isEmpty()){ 7 int temp=mins.peek(); 8 if(temp>=x){ //注意此处!!!在temp=x的时候也要push进去!!!想想[2,0,3,0] 9 mins.push(x);10 }11 }else{12 mins.push(x);13 }14 }15 16 public void pop() {17 if(!vals.isEmpty()){18 int x=vals.pop();19 if(!mins.isEmpty()){20 if(x==mins.peek()){21 mins.pop();22 }23 }else{24 return;25 }26 }else{27 return;28 }29 }30 31 public int top() {32 if(!vals.isEmpty()){33 return vals.peek();34 }else{35 return 0;36 }37 }38 39 public int getMin() {40 if(!mins.isEmpty()){41 return mins.peek();42 }else{43 return 0;44 }45 }46 }
[Leetcode] Min Stack
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。