【剑指offer】面试题30:包含min函数的栈
定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的min函數。在該棧中,調用min、push及pop的時間復雜度都是O(1)。
代碼:
package offer;
import java.util.Stack;
class MinInStack
{
?? ?Stack<Integer> stack = new Stack<Integer>();
?? ?Stack<Integer> minstack = new Stack<Integer>();
?? ?MinInStack()
?? ?{
?? ??? ?this.stack = new Stack<Integer>();
?? ??? ?this.minstack = new Stack<Integer>();
?? ?}
?? ?boolean IsEmpty()
?? ?{
?? ??? ?return this.stack.empty();
?? ?}
?? ?int Top()
?? ?{
?? ??? ?return this.stack.peek();
?? ?}
?? ?int min()
?? ?{
?? ??? ?return this.minstack.peek();
?? ?}
?? ?void Push(int val)
?? ?{
?? ??? ?this.stack.add(val);
?? ??? ?if(this.minstack.empty())
?? ??? ?{
?? ??? ??? ?this.minstack.add(val);
?? ??? ?}
?? ??? ?else if(val<=this.minstack.peek())
?? ??? ?{
?? ??? ??? ?this.minstack.add(val);
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?this.minstack.add(this.minstack.peek());
?? ??? ?}
?? ?}
?? ?int Pop()
?? ?{
?? ??? ?int x = this.stack.pop();
?? ??? ?if(!this.minstack.empty())
?? ??? ?{
?? ??? ??? ?this.minstack.pop();
?? ??? ?}?? ?
?? ??? ?return x;
?? ?}
}
public class ti30 {
?? ?public static void main(String[] args)
?? ?{
?? ??? ? MinInStack stack = new MinInStack();
?? ??? ? stack.Push(3);
?? ??? ? System.out.println(stack.min());
?? ??? ? stack.Push(4);
?? ??? ? System.out.println(stack.min());
?? ??? ? stack.Push(2);
?? ??? ? System.out.println(stack.min());
?? ??? ? stack.Push(1);
?? ??? ? System.out.println(stack.min());
?? ??? ? stack.Pop();
?? ??? ? System.out.println(stack.min());
?? ??? ? stack.Pop();
?? ??? ? System.out.println(stack.min());
?? ??? ? stack.Push(0);
?? ??? ? System.out.println(stack.min());
?? ?}
}
?
總結
以上是生活随笔為你收集整理的【剑指offer】面试题30:包含min函数的栈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlmap的简单用法
- 下一篇: 使用浏览器获取网页模板(HTML+CSS