오늘 배웠습니다: 최소-최대 스택

문제 설명



다음 기능을 사용하여 Min-Max 스택에 대한 MinMaxStack 클래스를 작성하십시오.
  • 스택에서 값을 푸시 및 팝합니다.
  • 스택 맨 위에서 값을 엿봅니다.
  • 일정한 시간에 스택의 현재 최소값과 최대값을 가져옵니다.

  • 샘플 입력 및 출력



    stack = MinMaxStack()
    stack.push(5) # min: 5, max: 5, current value: 5
    stack.push(7) # min: 5, max: 7, current value: 7
    stack.push(2) # min: 2, max: 7, current value: 2
    stack.pop(2) 
    stack.pop(7) # min: 5, max: 5, current value: 5
    

    코드 #1



    class MinMaxStack:
        def __init__(self):
            self.stack = []
    
        def peek(self):
            if len(self.stack) == 0:
                return None
            else:
                return self.stack[len(self.stack) - 1]['value']
    
        def pop(self):
            if len(self.stack) == 0:
                return None
            else:
                return self.stack.pop()['value']
    
        def push(self, number):
            self.stack.append(
                {
                    'value': number,
                    'min': self._calc_min(number),
                    'max': self._calc_max(number)
                }
            )
    
        def get_min(self):
            if len(self.stack) == 0:
                return None
            else:
                return self.stack[len(self.stack) - 1]['min']
    
        def get_max(self):
            if len(self.stack) == 0:
                return None
            else:
                return self.stack[len(self.stack) - 1]['max']
    
        def _calc_min(self, number):
            if len(self.stack) == 0:
                return number
            elif number < self.stack[len(self.stack) - 1]['min']:
                return number
            else:
                return self.stack[len(self.stack) - 1]['min']
    
        def _calc_max(self, number):
            if len(self.stack) == 0:
                return number
            elif number > self.stack[len(self.stack) - 1]['max']:
                return number
            else:
                return self.stack[len(self.stack) - 1]['max']
    
    
    

    메모


  • 팝 및 푸시 중에 현재, 최소값 및 최대값 상태를 저장합니다.

  • 크레딧


  • 문제 진술에 대한 Algoexpert.
  • 표지 이미지의 Lidya Nada( https://unsplash.com/photos/BnzqQwerUOY ).
  • 좋은 웹페이지 즐겨찾기