[]スタックがmin関数の実装含むパイソンを獲得20オファー

タイトル説明


スタックデータ構造定義、最小の要素は、スタックに含まmin関数であることができるこのタイプの実装(べき時間複雑性O(1))。

問題解決のためのアイデア


スタックは、MIN関数を含む
プッシュ・スタックをポップし、最小動作時間複雑度はO(1)で
Aを用い補助スタック最小保存

コードの実装


# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack = []
        self.minval = []
         
    def push(self, node):
    	self.stack.append(node)
        min = self.min()  # 使用一个辅助栈来保存最小值
        if min and min < node:
            self.minval.append(min)
        else:
            self.minval.append(node)
         
    def pop(self):
        if self.stack:
            self.minval.pop()
            return self.stack.pop()
        return None
     
    def top(self):
        # write code here
        if self.stack:
            return self.stack[-1]
         
    def min(self):
        # write code here
        if self.minval:
            return self.minval[-1]

if __name__ == '__main__':
    s = Solution()
    s.push(7)
    s.push(6)
    s.push(3)
    s.pop()
    s.push(2)
    print(s.stack)
    print(s.min())

出力例

[7,6,2]
2

公開された99元の記事 ウォンの賞賛6 ビュー3986

おすすめ

転載: blog.csdn.net/weixin_42247922/article/details/103945858