Advertisement
FroztGal

structures

Jan 19th, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.25 KB | None | 0 0
  1. class StackWithMaxElement:
  2.     def __init__(self):
  3.         self.items = []
  4.         self.max = []
  5.  
  6.     def push(self, item):
  7.         self.items.append(int(item))
  8.         if len(self.max) == 0:
  9.             self.max.append(item)
  10.         elif item >= self.max[-1]:
  11.             self.max.append(item)
  12.  
  13.     def pop(self):
  14.         tmp = self.items.pop()
  15.         if tmp == self.max[-1]:
  16.             self.max.pop()
  17.         return tmp
  18.  
  19.     def get_max(self):
  20.         return self.max[-1]
  21.  
  22.     def is_empty(self):
  23.         return len(self.items) == 0
  24.  
  25.     def clear(self):
  26.         self.items.clear()
  27.  
  28.  
  29. class QueueWithMaxElement:
  30.     def __init__(self):
  31.         self.stack1 = StackWithMaxElement()
  32.         self.stack2 = StackWithMaxElement()
  33.  
  34.     def push(self, item):
  35.         self.stack1.push(item)
  36.  
  37.     def pop(self):
  38.         if self.stack2.is_empty():
  39.             while not self.stack1.is_empty():
  40.                 self.stack2.push(self.stack1.pop())
  41.         return self.stack2.pop()
  42.  
  43.     def get_max(self):
  44.         if self.stack1.is_empty():
  45.             return self.stack2.get_max()
  46.         elif self.stack2.is_empty():
  47.             return self.stack1.get_max()
  48.         else:
  49.             return max(self.stack1.get_max(), self.stack2.get_max())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement