定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。
程式:
思路:利用乙個輔助棧來存放最小值
棧 3,4,2,5,1
輔助棧 3,3,2,2,1
每入棧一次,就與輔助棧頂比較大小,如果小就入棧,如果大就入棧當前的輔助棧頂
當出棧時,輔助棧也要出棧
這種做法可以保證輔助棧頂一定都當前棧的最小值
# -*- coding:utf-8 -*-
class solution:
def __init__(self):
self.stack =
self.assist =
def push(self, node):
min = self.min()
if not min or node < min:
else:
def pop(self):
if self.stack:
self.assist.pop()
return self.stack.pop()
def top(self):
# write code here
if self.stack:
return self.stack[-1]
def min(self):
# write code here
if self.assist:
return self.assist[-1]
資料結構(劍指offer)(堆疊)(python)
定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 思路 用空間換時間,用乙個輔助棧記錄當前棧中的最小值。輔助棧元素個數和資料棧保持一樣的數目。例如一次壓入資料棧數字串行為 3,2,4,1,5 那麼一次壓入輔助棧的為 3,2,2,1,1 當每次壓入資料棧...
劍指offer 資料結構類題目()
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。入隊時資料存到stackin,出隊時資料從stackout彈出。執行入隊操作時,資料源源不斷的壓入棧stackin。執行出隊操作時,stackout為空,則把stackin裡的資料全部彈出壓倒stackout中,當st...
劍指Offer 資料結構 05 替換空格
q 請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 1 限制 0 s 的長度 10000 這個題目將某字串中的單個字元替換為多個字元,改變了字串的長度,無法直接替換,有2種比較明顯的方法,乙個是構建乙個新的字串,根據每次遍歷的字元決定加入新字串中非空格的單字元還是 20。另外乙個方法較為...