Implement the following operations of a stack using queues.app
Example:spa
MyStack stack = new MyStack(); stack.push(1); stack.push(2); stack.top(); // returns 2 stack.pop(); // returns 2 stack.empty(); // returns false
Notes:code
push to back
, peek/pop from front
, size
, and is empty
operations are valid.
利用以下圖所示的方式, 每次push的時候將queue裏面的值都放到x的後面便可.blog
Push: O(n), others : O(1)element
Codeit
class MyStack(object): def __init__(self): """ Initialize your data structure here. """ self.q = collections.deque() def push(self, x): """ Push element x onto stack. :type x: int :rtype: void """ size = len(self.q) self.q.append(x) while size: self.q.append(self.q.popleft()) size -= 1 def pop(self): """ Removes the element on top of the stack and returns that element. :rtype: int """ return self.q.popleft() def top(self): """ Get the top element. :rtype: int """ return self.q[0] def empty(self): """ Returns whether the stack is empty. :rtype: bool """ return not self.q # 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()