LeetCode 716. 最大栈(双栈 / list+map)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 716. 最大栈(双栈 / list+map)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
- 2.1 雙棧解法
- 2.2 list+map
1. 題目
設計一個最大棧,支持 push、pop、top、peekMax 和 popMax 操作。
push(x) -- 將元素 x 壓入棧中。 pop() -- 移除棧頂元素并返回這個值。 top() -- 返回棧頂元素。 peekMax() -- 返回棧中最大元素。 popMax() -- 返回棧中最大的元素,并將其刪除。如果有多個最大元素,只要刪除最靠近棧頂的那個。樣例 1: MaxStack stack = new MaxStack(); stack.push(5); stack.push(1); stack.push(5); stack.top(); -> 5 stack.popMax(); -> 5 stack.top(); -> 1 stack.peekMax(); -> 5 stack.pop(); -> 1 stack.top(); -> 5注釋: -1e7 <= x <= 1e7 操作次數不會超過 10000。 當棧為空的時候不會出現后四個操作。來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/max-stack
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
類似題目:LeetCode 155. 最小棧
2.1 雙棧解法
- 同時插入數值,和最大值
- 當要刪除最大的值的時候,要將不是最大值的數,先存入臨時棧,后序再挪回來,最壞時間復雜度O(n)
140 ms 32.2 MB
2.2 list+map
- list 當做棧來使用
- map的key為數值,value掛著數值下,對應的list迭代器
- 時間復雜度O(log n)
240 ms 35.2 MB
長按或掃碼關注我的公眾號,一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 716. 最大栈(双栈 / list+map)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [scikit-learn 机器学习]
- 下一篇: LeetCode 828. 统计子串中的