The space cost is O(n). The runtime cost of enqueue is O(1); the runtime cost of dequeue is O(n). Using the "accounting method", the cost of an item in the system is O(1). Here's why: +------------+----------------------------+------+ | enqueue | push onto lhs | O(1) | +------------+----------------------------+------+ | lhs -> rhs | pop off lhs; push onto rhs | O(1) | +------------+----------------------------+------+ | dequeue | pop off rhs | O(1) | +------------+----------------------------+------+
		
			
				
	
	
		
			17 lines
		
	
	
	
		
			439 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			17 lines
		
	
	
	
		
			439 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| class Queue(object):
 | |
|     def __init__(self):
 | |
|         self.lhs = []
 | |
|         self.rhs = []
 | |
| 
 | |
|     def enqueue(self, x):
 | |
|         self.lhs.append(x)
 | |
| 
 | |
|     def dequeue(self):
 | |
|         if self.rhs:
 | |
|             return self.rhs.pop()
 | |
|         while self.lhs:
 | |
|             self.rhs.append(self.lhs.pop())
 | |
|         if self.rhs:
 | |
|             return self.rhs.pop()
 | |
|         else:
 | |
|             raise Exception("Attempting to remove an item from an empty queue")
 |