国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【leetcode】MinStack--python版

2019-11-14 17:30:01
字體:
來源:轉載
供稿:網友

題目描述:

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) -- Push element x onto stack.
pop() -- Removes the element on top of the stack.
top() -- Get the top element.
getMin() -- Retrieve the minimum element in the stack.

解題思路:

這個問題挺簡單(確實leetcode給的評級也是easy),但是還真是遇上了不少的問題。
首先,這道題目我們的想法是如何去做到這個特殊的getMin,想到的方法當然是空間換時間啦,那么用什么空間呢?當然是另一個棧啦,所以我們就有了這么一個想法:用另一個棧來記錄當前最小值,那么查找最小值就不需要遍歷了,這樣就實現了時間復雜度和空間復雜度都是O(n)。的確這個想法已經很不錯了,用java(官方題解就是這個版本)和C++(親測)。但是我用python就MLE了,讓我糾結了好久。
所以在沒辦法就要優化內存了,這里采用的方法是在minStack中插值的時候對相同的值不重復插入,而是記錄他的次數,終于AC

MLE

 1 class MinStack: 2     def __init__(self): 3         self.stack = [] 4         self.minStack = [] 5     # @param x, an integer 6     # @return an integer 7     def push(self, x): 8         self.stack.append(x) 9         if len(self.minStack) == 0 or self.minStack[-1] >= x:10             #11             self.minStack.append(x)12  13     # @return nothing14     def pop(self):15         p = self.stack.pop()16         #print 'pop ' , p17         if p == self.minStack[-1]:18             #print 'minn pop'19             self.minStack.pop()20 21     # @return an integer22     def top(self):23         return self.stack[-1]24 25     # @return an integer26     def getMin(self):27         return self.minStack[-1]

AC

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇州县| 台湾省| 昌黎县| 南投市| 阜新| 山西省| 大余县| 金坛市| 新丰县| 大厂| 武冈市| 定远县| 博乐市| 辰溪县| 文登市| 临邑县| 千阳县| 洪湖市| 东源县| 德昌县| 丹江口市| 滨州市| 民丰县| 南投县| 靖江市| 肃南| 克东县| 永州市| 开阳县| 柳河县| 中牟县| 红安县| 康定县| 东方市| 柘荣县| 常熟市| 法库县| 延川县| 阿拉善左旗| 诸城市| 蓝田县|