中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

巴东县| 明水县| 马龙县| 孟连| 昭通市| 许昌县| 隆化县| 罗江县| 台安县| 都昌县| 贵定县| 仪陇县| 扶绥县| 贡嘎县| 炉霍县| 汉寿县| 石泉县| 黄梅县| 禹州市| 磴口县| 白朗县| 高淳县| 拉萨市| 即墨市| 隆德县| 海阳市| 旬邑县| 新巴尔虎左旗| 石棉县| 哈尔滨市| 富蕴县| 兴和县| 寻乌县| 三亚市| 颍上县| 成武县| 古丈县| 鄢陵县| 枣阳市| 新沂市| 灌云县|