91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

松溪县| 商河县| 上杭县| 南城县| 罗平县| 康保县| 清新县| 白玉县| 湖州市| 青阳县| 南皮县| 海兴县| 习水县| 东兴市| 睢宁县| 正宁县| 海伦市| 浪卡子县| 靖安县| 宕昌县| 星子县| 遵义市| 杭锦旗| 长春市| 阜宁县| 延寿县| 上饶县| 辰溪县| 苍梧县| 伊吾县| 同仁县| 凤山县| 团风县| 潜山县| 卢龙县| 酉阳| 炉霍县| 德化县| 河源市| 大丰市| 玛纳斯县|