Advertisement
zozohoang

Untitled

Jun 18th, 2022
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.24 KB | None | 0 0
  1. class MyStack:
  2.  
  3.     def __init__(self):
  4.         self.dq = deque()
  5.        
  6.  
  7.     def push(self, x: int) -> None:
  8.         self.dq.append(x)
  9.  
  10.     def pop(self) -> int:
  11.         return self.dq.pop()
  12.  
  13.     def top(self) -> int:
  14.         return self.dq[-1]
  15.  
  16.     def empty(self) -> bool:
  17.         return False if len(self.dq) > 0 else True
  18.  
  19.  
  20. # Your MyStack object will be instantiated and called as such:
  21. # obj = MyStack()
  22. # obj.push(x)
  23. # param_2 = obj.pop()
  24. # param_3 = obj.top()
  25. # param_4 = obj.empty()
  26.  
  27.  
  28. ###################################################################
  29.  class MyQueue:
  30.     '''
  31.    Ý tưởng: Sử dụng 2 stack: main_stack lưu 1 phần tử duy nhất
  32.    sub_stack lưu số phần tử còn lại
  33.    Như vậy thì việc pop push, peek, empty trên main_stack sẽ là O(1)
  34.    sub_stack thì lưu phần tử còn lại mỗi khi main_stack pop or main_stack thì lấy phần tử trong sub_stack và tăng biến đếm chỉ số của
  35.    sub_stack
  36.    '''
  37.     def __init__(self):
  38.         self.main_stack = []
  39.         self.sub_stack = []
  40.         self.idx_tail = 0
  41.  
  42.     def push(self, x: int) -> None:
  43.         if len(self.main_stack) == 0 and len(self.sub_stack) == 0:
  44.             self.main_stack.append(x)
  45.         else:
  46.             self.sub_stack.append(x)
  47.  
  48.     def pop(self) -> int:
  49.         if len(self.main_stack) == 0 and len(self.sub_stack) == 0:
  50.             return -1
  51.         if len(self.main_stack) == 0 and len(self.sub_stack) > 0:
  52.             if  self.idx_tail >= len(self.sub_stack):
  53.                 return -1
  54.            
  55.             self.main_stack.append(self.sub_stack[self.idx_tail])
  56.             self.idx_tail += 1
  57.    
  58.         return self.main_stack.pop()
  59.  
  60.     def peek(self) -> int:
  61.         if len(self.main_stack) > 0 :
  62.             return self.main_stack[-1]
  63.         else:
  64.             return self.sub_stack[self.idx_tail]
  65.  
  66.     def empty(self) -> bool:
  67.         return len(self.main_stack) == 0 and self.idx_tail > len(self.sub_stack) - 1
  68.  
  69.  
  70. # Your MyQueue object will be instantiated and called as such:
  71. # obj = MyQueue()
  72. # obj.push(x)
  73. # param_2 = obj.pop()
  74. # param_3 = obj.peek()
  75. # param_4 = obj.empty()
  76. ########################################################################
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement