1. 程式人生 > >劍指offer 第20題 包含min函式的棧

劍指offer 第20題 包含min函式的棧

描述:

定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式(時間複雜度應為O(1))

思路:

兩個棧,一個存所有元素,一個存當前的最小元素

程式碼:

class Solution:
    def __init__(self):
        self.stack = []
        self.stack_min = []
        self.min_value = float('inf')
    def push(self, node):
        # write code here
        self.stack.append(node)
        if node < self.min_value:
            self.min_value = node
            self.stack_min.append(node)
        else:
            self.stack_min.append(self.min_value)
    def pop(self):
        # write code here
        self.stack_min.pop()
        if self.stack_min:
            self.min_value = self.stack_min[-1]
        else:
            self.min_value = float('float')
        return self.stack.pop()
    def top(self):
        # write code here
        return self.stack[-1]
    def min(self):
        # write code here
        return self.stack_min[-1]

結果:

執行時間:28ms

佔用記憶體:5724k