搜索微信公衆號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習乾貨
csdn:https://blog.csdn.net/baidu_31657889/
csdn:https://blog.csdn.net/abcgkj/
github:https://github.com/aimi-cn/AILearnerspython
這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。咱們第一遍刷的是leetcode推薦的題目。
查看完整的劍指Offer算法題解析請點擊github連接:
github地址git
設計一個支持 push,pop,top 操做,並能在常數時間內檢索到最小元素的棧。github
示例:面試
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2.
第一種方法:算法
用列表模擬棧,push、pop、top和getMin分別對應list.append()、list.pop()、list[-1]和min()操做編程
第二種方法:微信
引入minStack列表存放最小值app
第一種方法:機器學習
python學習
class MinStack(object): def __init__(self): """ initialize your data structure here. """ self.l = [] def push(self, x): """ :type x: int :rtype: None """ if x is None: pass else: self.l.append(x) def pop(self): """ :rtype: None """ if self.l is None: return 'error' else: self.l.pop(-1) def top(self): """ :rtype: int """ if self.l is None: return 'error' else: return self.l[-1] def getMin(self): """ :rtype: int """ if self.l is None: return 'error' else: return min(self.l) # Your MinStack object will be instantiated and called as such: # obj = MinStack() # obj.push(x) # obj.pop() # param_3 = obj.top() # param_4 = obj.getMin()
第二種方法:
class MinStack(object): def __init__(self): """ initialize your data structure here. """ self.stack = [] #存放全部元素 self.minStack = []#存放每一次壓入數據時,棧中的最小值(若是壓入數據的值大於棧中的最小值就不須要重複壓入最小值,小於或者等於棧中最小值則須要壓入) def push(self, x): """ :type x: int :rtype: void """ self.stack.append(x) if not self.minStack or self.minStack[-1]>=x: self.minStack.append(x) def pop(self): #移除棧頂元素時,判斷是否移除棧中最小值 """ :rtype: void """ if self.minStack[-1]==self.stack[-1]: del self.minStack[-1] self.stack.pop() def top(self): """ :rtype: int """ return self.stack[-1] def getMin(self): """ :rtype: int """ return self.minStack[-1]
AIMI-CN AI學習交流羣【1015286623】 獲取更多AI資料
分享技術,樂享生活:咱們的公衆號計算機視覺這件小事每週推送「AI」系列資訊類文章,歡迎您的關注!
本文由博客一文多發平臺 OpenWrite 發佈!