亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LeetCode怎么實現包含min函數的棧

發布時間:2021-12-15 14:19:17 來源:億速云 閱讀:131 作者:小新 欄目:大數據

這篇文章主要為大家展示了“LeetCode怎么實現包含min函數的棧”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“LeetCode怎么實現包含min函數的棧”這篇文章吧。

題目描述

定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間復雜度應為O(1))。

解析

看到這個問題, 我們最開始可能會想, 添加一個成員變量用于保存最小元素, 每次壓棧時如果壓棧元素比當前最小元素更小, 就更新最小元素.

但是這樣會有一個問題, 如果最小元素被彈出了呢, 如何獲得下一個最小元素呢?分析到這里可以發現, 僅僅添加一個成員變量存放最小元素是不夠的, 我們需要在最小元素彈出后還能得到次小元素, 次小的彈出后, 還要能得到次次小的.因此, 用另一個棧來保存這些元素是再合適不過的了. 我們叫它最小元素棧.

每次壓棧操作時, 如果壓棧元素比當前最小元素更小, 就把這個元素壓入最小元素棧, 原本的最小元素就成了次小元素. 同理, 彈棧時, 如果彈出的元素和最小元素棧的棧頂元素相等, 就把最小元素的棧頂彈出.

代碼

class Solution {
public:
   void push(int value) {
       s.push(value);
       if(sMin.empty())
           sMin.push(value);
       else if(value <= sMin.top())
           sMin.push(value);
   }
   void pop() {
       if(s.top() == sMin.top())
           sMin.pop();
       s.pop();
   }
   int top() {
       return s.top();
   }
   int min() {
       return sMin.top();
   }
private:
   stack<int> s;
   stack<int> sMin;
};

以上是“LeetCode怎么實現包含min函數的棧”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浙江省| 岳池县| 鄂托克旗| 车险| 水富县| 全州县| 朔州市| 务川| 简阳市| 尚志市| 毕节市| 宝坻区| 上蔡县| 稻城县| 温宿县| 循化| 黎城县| 濮阳市| 万州区| 凤翔县| 霍林郭勒市| 交城县| 西乌珠穆沁旗| 阳东县| 宁远县| 日照市| 浑源县| 若羌县| 社旗县| 高阳县| 肃北| 曲麻莱县| 日喀则市| 梨树县| 汨罗市| 宁海县| 凭祥市| 搜索| 进贤县| 翁源县| 潼关县|