[Python으로 푸는 Leetcode]155. Min Stack

느린 개발자·2021년 1월 2일
0

Coding Test

목록 보기
17/21

📌Problem

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • getMin() -- Retrieve the minimum element in the stack.

Example 1:

Input
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]

Output
[null,null,null,null,-3,null,0,-2]

Explanation
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); // return -3
minStack.pop();
minStack.top();    // return 0
minStack.getMin(); // return -2

Constraints:

  • Methods pop, top and getMin operations will always be called on non-empty stacks.

leetcode 에서 풀기


📝Solution

class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.__stack=[]
        

    def push(self, x: int) -> None:
        if self.__stack:
            self.__stack.append((x,min(x,self.__stack[-1][1])))  # (x,minimum)
        else:
            self.__stack.append((x,x))
        
        
                    
    def pop(self) -> None:
        if self.__stack:
            self.__stack.pop()
        

    def top(self) -> int:
        if self.__stack:
            return self.__stack[-1][0]
        

    def getMin(self) -> int:
        return self.__stack[-1][1]
            
        


# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
profile
남들보단 느리지만, 끝을 향해

0개의 댓글