대기열을 사용하여 스택 구현

1934 단어 theabbieleetcodedsa
두 개의 대기열만 사용하여 후입선출(LIFO) 스택을 구현합니다. 구현된 스택은 일반 스택( push , top , popempty )의 모든 기능을 지원해야 합니다.
MyStack 클래스를 구현합니다.
  • void push(int x) 요소 x를 스택 맨 위로 푸시합니다.
  • int pop() 스택 맨 위에 있는 요소를 제거하고 반환합니다.
  • int top() 스택 맨 위에 있는 요소를 반환합니다.
  • boolean empty() 스택이 비어 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

  • 메모:
  • 대기열의 표준 작업만 사용해야 합니다. 즉, push to back , peek/pop from front , sizeis empty 작업만 유효합니다.
  • 언어에 따라 대기열이 기본적으로 지원되지 않을 수 있습니다. 대기열의 표준 작업만 사용하는 한 목록 또는 deque(양단 대기열)를 사용하여 대기열을 시뮬레이션할 수 있습니다.

  • 예 1:

    입력
    ["MyStack", "푸시", "푸시", "상단", "팝", "빈"]
    [[], [1], [2], [], [], []]
    산출
    [널, 널, 널, 2, 2, 거짓]

    설명
    MyStack myStack = new MyStack();
    myStack.push(1);
    myStack.push(2);
    myStack.top();//2 반환
    myStack.pop();//2 반환
    myStack.empty();//거짓 반환

    제약:
  • 1 <= x <= 9
  • 최대 100 호출은 push , pop , topempty 로 이루어집니다.
  • poptop에 대한 모든 호출이 유효합니다.

  • 후속 조치: 하나의 대기열만 사용하여 스택을 구현할 수 있습니까?

    해결책:

    class MyStack:
    
        def __init__(self):
            self.stack = []
    
        def push(self, x: int) -> None:
            self.stack.append(x)
    
        def pop(self) -> int:
            if not self.empty():
                return self.stack.pop()
    
        def top(self) -> int:
            if not self.empty():
                return self.stack[-1]
    
        def empty(self) -> bool:
            return len(self.stack) == 0
    
    
    # Your MyStack object will be instantiated and called as such:
    # obj = MyStack()
    # obj.push(x)
    # param_2 = obj.pop()
    # param_3 = obj.top()
    # param_4 = obj.empty()
    

    좋은 웹페이지 즐겨찾기