劍指offer 五) 資料結構 棧

2021-09-23 20:45:54 字數 791 閱讀 1295

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的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。另外乙個方法較為...