天天看點

LeetCode刷題155-簡單-最小棧☀️ 前言 ☀️🙀 作者簡介 🙀💗 一、題目描述 💗💁 二、題目解析 💁🏃 三、代碼 🏃🌔 結語 🌔

LeetCode刷題155-簡單-最小棧☀️ 前言 ☀️🙀 作者簡介 🙀💗 一、題目描述 💗💁 二、題目解析 💁🏃 三、代碼 🏃🌔 結語 🌔

文章目錄

算法作為極其重要的一點,是大學生畢業找工作的核心競争力,是以為了不落後與人,開始刷力扣算法題!

大家好,我是布小禅,一個盡力讓無情的代碼變得生動有趣的IT小白,很高興能偶認識你,關注我,每天堅持學點東西,我們以後就是大佬啦!

📢 :

❤布小禅❤ 📢 作者專欄: ❤Python❤ ❤Java❤ ❤力扣題❤ 這是我刷第 72/100 道力扣簡單題

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

push(x) —— 将元素 x 推入棧中。

pop() —— 删除棧頂的元素。

top() —— 擷取棧頂元素。

getMin() —— 檢索棧中的最小元素。

來源:力扣(LeetCode)

連結:

https://leetcode-cn.com/problems/min-stack

著作權歸領扣網絡所有。

商業轉載請聯系官方授權,非商業轉載請注明出處。

示例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
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
• 13
• 14
• 15
• 16      

提示:pop、top 和 getMin 操作總是在 非空棧 上調用。

思路1

因為需要使用O(1)求最小棧元素
  1. 是以棧需要多一個元素記錄最小元素

    實際操作後發現使用數組實作的棧行不通

    連結清單實作的可以

    在每個節點都存儲兩個元素,一個為目前,一個為最小

  2. 每次向數組實作的棧中存放兩個元素
    1. 一個為目前值
    2. 一個為最小值

      出棧是也同樣如此,這樣才能保證每次出棧後還有一個目前棧内的最小值

輸入:
["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.      

堅持最重要,每日一題必不可少!😸

期待你的關注和督促!😛

LeetCode刷題155-簡單-最小棧☀️ 前言 ☀️🙀 作者簡介 🙀💗 一、題目描述 💗💁 二、題目解析 💁🏃 三、代碼 🏃🌔 結語 🌔