검 지 offer: min 함 수 를 포함 하 는 창고 (Python)

제목 설명
스 택 의 데이터 구 조 를 정의 합 니 다. 이 형식 에서 스 택 의 최소 요 소 를 얻 을 수 있 는 min 함 수 를 실현 하 십시오.
# -*- coding:utf-8 -*-
class Solution:
    def push(self, node):
        # write code here
    def pop(self):
        # write code here
    def top(self):
        # write code here
    def min(self):
        # write code here

문제 풀이 의 사고 방향.
제목 은 위 와 같은 네 가지 방법 을 요구 하지만 파 이 썬 에 게 는 너무 간단 하고 도전 성 이 없다. 자바 / C 들 의 긴 코드 를 보고 파 이 썬 을 사용 하 는 나 는 마음 이 허전 하 다.이 문제 로 돌아 가면 스 택 에 들 어가 서 스 택 함수 가 머리 가 없 으 므 로 min 함 수 를 조금 주의해 야 합 니 다.실제 작업 에서 스 택 에 들 어 갈 때 동적 으로 교체 되 어 실 행 될 수 있 기 때문에 최소 값 은 새로 들 어 온 스 택 의 더 작은 값 으로 바 뀔 수도 있 고 팝 업 되 어 min 값 의 동적 변 화 를 초래 할 수도 있 습 니 다.현재 최소 값 을 저장 하기 위해 스 택 을 새로 만 듭 니 다. 더 작은 값 이 스 택 에 들 어 갈 때 이 스 택 에 누 르 고 최소 값 은 스 택 꼭대기 요소 입 니 다.스 택 꼭대기 에 있 는 최소 값 이 스 택 에서 나 오 면 스 택 꼭대기 의 요 소 는 새로운 최소 값 이 라 고 부 릅 니 다.제목 이 요구 하 는 top () 함수 가 어떤 역할 을 정의 하 는 지 보고 top () 함수 로 최소 값 을 저장 하 는 스 택 의 스 택 꼭대기 요 소 를 되 돌려 주 었 습 니 다.
파 이 썬 코드
import sys
class Solution:
    def __init__(self):
        self.list = []
        self.minStack = [sys.maxsize]

    def push(self, node):
        self.list.append(node)
        if node < self.top():
            self.minStack.append(node)

    def pop(self):
        if self.list:
            popNum = self.list.pop(-1)
            if popNum == self.top():
                self.minStack.pop(-1)
            return popNum
        else:
            return None

    def top(self):
        if self.minStack:
            return self.minStack[-1]
        else:
            return None

    def min(self):
        return self.top()

좋은 웹페이지 즐겨찾기