Queue With Two Stacks
Programming Interview
Medium
8 views
Problem Description
You will receive q commands: ENQ x, DEQ, FRONT. Create Queue class using two stacks. FRONT prints front value or EMPTY.
Input Format
First line q. Next q lines commands.
Output Format
Outputs for FRONT.
Sample Test Case
Input:
7
ENQ 5
ENQ 2
FRONT
DEQ
FRONT
DEQ
FRONT
Official Solution
import sys
lines=sys.stdin.read().splitlines()
if not lines: sys.exit(0)
q=int(lines[0].strip())
class Queue:
def __init__(self):
self.a=[]
self.b=[]
def _shift(self):
if not self.b:
while self.a:
self.b.append(self.a.pop())
def enq(self,x):
self.a.append(x)
def deq(self):
self._shift()
if self.b:
self.b.pop()
def front(self):
self._shift()
return self.b[-1] if self.b else None
qq=Queue()
out=[]
for i in range(1,1+q):
parts=(lines[i] if i<len(lines) else '').split()
if not parts: continue
if parts[0]=='ENQ':
qq.enq(int(parts[1]))
elif parts[0]=='DEQ':
qq.deq()
else:
v=qq.front()
out.append(str(v) if v is not None else 'EMPTY')
print('\
'.join(out))
Solutions (0)
No solutions submitted yet. Be the first!
No comments yet. Start the discussion!