日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 155.最小栈

發布時間:2024/1/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 155.最小栈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計一個支持 push ,pop ,top 操作,并能在常數時間內檢索到最小元素的棧。

實現 MinStack 類:

MinStack() 初始化堆棧對象。

void push(int val) 將元素val推入堆棧。

void pop() 刪除堆棧頂部的元素。

int top() 獲取堆棧頂部的元素。

int getMin() 獲取堆棧中的最小元素。

示例 1:

輸入:

["MinStack","push","push","push","getMin","pop","top","getMin"]

[[],[-2],[0],[-3],[],[],[],[]]

輸出:

[null,null,null,null,-3,null,0,-2]

解釋:

MinStack minStack = new MinStack();

minStack.push(-2);

minStack.push(0);

minStack.push(-3);

minStack.getMin(); --> 返回 -3.

minStack.pop();

minStack.top(); --> 返回 0.

minStack.getMin(); --> 返回 -2.

提示:

1、-231 <= val <= 231 - 1

2、pop、top 和 getMin 操作總是在 非空棧 上調用

3、push, pop, top, and getMin最多被調用 3 * 104 次

思路:

建立一個正常棧,另外一個棧為最小棧

  • push方法:如果第二個元素大于第一個元素,則最小棧不入,正常棧入,反之,都入

  • pop方法:正常棧出,直到出的元素等于最小棧的棧頂元素,都出

  • 代碼:

    class MinStack {private Stack<Integer> stack;private Stack<Integer> minStack;public MinStack() {this.stack=new Stack<>();this.minStack=new Stack<>();}public void push(int val) {stack.push(val);if (minStack.empty()){minStack.push(val);}else {if (val<=minStack.peek()) {minStack.push(val);}}}public void pop() {if (stack.empty()){return;}int x=stack.pop();if (x==minStack.peek()){minStack.pop();}}public int top() {if (stack.empty()){return -1;}return stack.peek();}public int getMin() {if (minStack.empty()){return -1;}return minStack.peek();} }

    總結

    以上是生活随笔為你收集整理的LeetCode 155.最小栈的全部內容,希望文章能夠幫你解決所遇到的問題。

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