[20. 쿠폰 스택은 최소 기능을 구현하는 단계 파이썬 승

제목 설명


스택 데이터 구조 정의, 가장 작은 요소 스택에 포함되는 분 함수일 수있다 이러한 유형의 구현 (한다 시간 복잡도 O (1)).

문제 해결 아이디어


최소 함수 포함 스택
분 작업 시간 복잡도 (1) O이고, 푸시 스택을 팝
사용보조 스택최소 저장

코드 구현


# -*- 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