日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【剑指offer】面试题30:包含min函数的栈

發布時間:2024/7/19 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【剑指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函数的栈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。