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