1. 程式人生 > >劍指offer 面試30題

劍指offer 面試30題

round 最小 color 數據 pan ret 結構 AS ack

面試30題:

題目:包含min函數的棧

題:定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。在該棧中,調用min、push、pop的時間復雜度都是O(1)

解題思路:1)如果每次壓入新元素時,再調整讓新元素位於棧頂,這種思路不能保證最後壓入棧的元素最先出棧,因此這個數據結構已經不是棧了。X

2)如果在棧中添加一個成員變量存放最小元素,那麽當最小元素彈出後,就不知道下一個最小元素在哪兒了。因此,必須將次小元素保存。X

     3)把每次的最小元素保存起來放在另一個輔助棧裏。 √

解題代碼:

# -*- coding:utf-8 -*-
class
Solution: def __init__(self): self.stack=[] self.minstack=[] def push(self, node): # write code here self.stack.append(node) if self.minstack==[] or node<self.min(): self.minstack.append(node) else: self.minstack.append(self.min())
def pop(self): # write code here if self.stack==[] or self.minstack==[]: return None self.stack.pop() self.minstack.pop() def top(self): # write code here return self.stack[-1] def min(self): # write code here return
self.minstack[-1]

劍指offer 面試30題