Add coding exercises for Facebook interviews
Add attempts at solving coding problems to Briefcase.
This commit is contained in:
		
							parent
							
								
									d2d772e43e
								
							
						
					
					
						commit
						aa66d9b83d
					
				
					 66 changed files with 2994 additions and 0 deletions
				
			
		
							
								
								
									
										49
									
								
								scratch/facebook/largest-stack.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								scratch/facebook/largest-stack.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | |||
| from stack import Stack, from_list | ||||
| from heapq import heapify, heappush, heappop | ||||
| from random import shuffle | ||||
| 
 | ||||
| class MaxStack(Stack): | ||||
|     def __init__(self): | ||||
|         self.max = Stack() | ||||
|         super().__init__() | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         return super().__repr__() | ||||
| 
 | ||||
|     def push(self, x): | ||||
|         super().push(x) | ||||
|         max = self.get_max() | ||||
|         if not max: | ||||
|             self.max.push(x) | ||||
|         else: | ||||
|             self.max.push(max if x < max else x) | ||||
| 
 | ||||
|     def pop(self): | ||||
|         self.max.pop() | ||||
|         return super().pop() | ||||
| 
 | ||||
|     def get_max(self): | ||||
|         return self.max.peek() | ||||
| 
 | ||||
| xs = list(range(1, 11)) | ||||
| shuffle(xs) | ||||
| stack = MaxStack() | ||||
| for x in xs: | ||||
|     stack.push(x) | ||||
| 
 | ||||
| print(stack) | ||||
| result = stack.get_max() | ||||
| print(result) | ||||
| assert result == 10 | ||||
| 
 | ||||
| popped = stack.pop() | ||||
| print("Popped: {}".format(popped)) | ||||
| print(stack) | ||||
| while popped != 10: | ||||
|     assert stack.get_max() == 10 | ||||
|     popped = stack.pop() | ||||
|     print("Popped: {}".format(popped)) | ||||
|     print(stack) | ||||
| 
 | ||||
| assert stack.get_max() != 10 | ||||
| print("Success!") | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue