LeetCode初級算法--設計問題02:最小棧
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨
csdn:https://blog.csdn.net/baidu_31657889/
csdn:https://blog.csdn.net/abcgkj/
github:https://github.com/aimi-cn/AILearners
一、引子
這是由LeetCode官方推出的的經(jīng)典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。我們第一遍刷的是leetcode推薦的題目。
查看完整的劍指Offer算法題解析請點擊github鏈接:
github地址
二讹开、題目
設計一個支持 push,pop,top 操作汹粤,并能在常數(shù)時間內(nèi)檢索到最小元素的棧。
- push(x) -- 將元素 x 推入棧中田晚。
- pop() -- 刪除棧頂?shù)脑亍?/li>
- top() -- 獲取棧頂元素嘱兼。
- getMin() -- 檢索棧中的最小元素。
示例:
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贤徒、思路
第一種方法:
用列表模擬棧芹壕,push、pop接奈、top和getMin分別對應list.append()踢涌、list.pop()、list[-1]和min()操作
第二種方法:
引入minStack列表存放最小值
2序宦、編程實現(xiàn)
第一種方法:
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 = []#存放每一次壓入數(shù)據(jù)時睁壁,棧中的最小值(如果壓入數(shù)據(jù)的值大于棧中的最小值就不需要重復壓入最小值,小于或者等于棧中最小值則需要壓入)
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”系列資訊類文章,歡迎您的關注秕噪!
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布钳降!