mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 20:26:07 -04:00
warmup, preparing to give interviews
This commit is contained in:
parent
8b4aa469a7
commit
b7f8e031c3
45
short_phone_interview_problems/hash_table.py
Normal file
45
short_phone_interview_problems/hash_table.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
__author__ = "bt3"
|
||||||
|
|
||||||
|
|
||||||
|
class HashTable(object):
|
||||||
|
def __init__(self, slots=10):
|
||||||
|
self.slots = slots
|
||||||
|
self.table = []
|
||||||
|
self.create_table()
|
||||||
|
|
||||||
|
# Get the slot
|
||||||
|
def hash_key(self, value):
|
||||||
|
return hash(value)%self.slots
|
||||||
|
|
||||||
|
# When creating the table, add list struct
|
||||||
|
# to each slot
|
||||||
|
def create_table(self):
|
||||||
|
for i in range(self.slots):
|
||||||
|
self.table.append([])
|
||||||
|
|
||||||
|
# Method to add a item in the right slot
|
||||||
|
def add_item(self, value):
|
||||||
|
key = self.hash_key(value)
|
||||||
|
self.table[key].append(value)
|
||||||
|
|
||||||
|
# Aux: print table
|
||||||
|
def print_table(self):
|
||||||
|
for key in range(self.slots):
|
||||||
|
print "Key is {0}, value is {1}.".format(key, self.table[key])
|
||||||
|
|
||||||
|
# Aux: find item
|
||||||
|
def find_item(self, item):
|
||||||
|
item_hash = self.hash_key(item)
|
||||||
|
return item in self.table[item_hash]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
dic = HashTable(5)
|
||||||
|
for i in range(1, 40, 2):
|
||||||
|
dic.add_item(i)
|
||||||
|
|
||||||
|
dic.print_table()
|
||||||
|
assert(dic.find_item(20) == False)
|
||||||
|
assert(dic.find_item(21) == True)
|
60
short_phone_interview_problems/linked_list.py
Normal file
60
short_phone_interview_problems/linked_list.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
__author__ = "bt3"
|
||||||
|
|
||||||
|
|
||||||
|
class Node(object):
|
||||||
|
def __init__(self, value, next=None):
|
||||||
|
self.value = value
|
||||||
|
self.next = next
|
||||||
|
|
||||||
|
|
||||||
|
class LinkedList(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.head = None
|
||||||
|
|
||||||
|
def _add(self, value):
|
||||||
|
self.head = Node(value, self.head)
|
||||||
|
|
||||||
|
def _printList(self):
|
||||||
|
node = self.head
|
||||||
|
while node:
|
||||||
|
print node.value
|
||||||
|
node = node.next
|
||||||
|
|
||||||
|
def _find(self, index):
|
||||||
|
prev = None
|
||||||
|
node = self.head
|
||||||
|
i = 0
|
||||||
|
while node and i < index:
|
||||||
|
prev = node
|
||||||
|
node = node.next
|
||||||
|
i += 1
|
||||||
|
return node, prev, i
|
||||||
|
|
||||||
|
def _delete(self, prev, node):
|
||||||
|
if not prev:
|
||||||
|
self.head = node.next
|
||||||
|
else:
|
||||||
|
prev.next = node.next
|
||||||
|
|
||||||
|
def deleteNode(self, index):
|
||||||
|
node, prev, i = self._find(index)
|
||||||
|
if index == i:
|
||||||
|
self._delete(prev, node)
|
||||||
|
else:
|
||||||
|
print('Node with index {} not found'.format(index))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
ll = LinkedList()
|
||||||
|
for i in range(1, 5):
|
||||||
|
ll._add(i)
|
||||||
|
|
||||||
|
print('The list is:')
|
||||||
|
ll._printList()
|
||||||
|
|
||||||
|
print('The list after deleting node with index 2:')
|
||||||
|
ll.deleteNode(2)
|
||||||
|
ll._printList()
|
Loading…
x
Reference in New Issue
Block a user