mirror of
https://github.com/donnemartin/system-design-primer.git
synced 2025-09-17 09:30:39 +03:00
revert to origin
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"This notebook was prepared by [Donne Martin](https://github.com/donnemartin) . Source and license info is on [GitHub](https://github.com/donnemartin/system-design-primer) ."
|
||||
"This notebook was prepared by [Donne Martin](https://github.com/donnemartin). Source and license info is on [GitHub](https://github.com/donnemartin/system-design-primer)."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -56,44 +56,44 @@
|
||||
],
|
||||
"source": [
|
||||
"%%writefile hash_map.py\n",
|
||||
"class Item(object) :\n",
|
||||
"class Item(object):\n",
|
||||
"\n",
|
||||
" def __init__(self, key, value) :\n",
|
||||
" def __init__(self, key, value):\n",
|
||||
" self.key = key\n",
|
||||
" self.value = value\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"class HashTable(object) :\n",
|
||||
"class HashTable(object):\n",
|
||||
"\n",
|
||||
" def __init__(self, size) :\n",
|
||||
" def __init__(self, size):\n",
|
||||
" self.size = size\n",
|
||||
" self.table = [[] for _ in range(self.size) ]\n",
|
||||
" self.table = [[] for _ in range(self.size)]\n",
|
||||
"\n",
|
||||
" def _hash_function(self, key) :\n",
|
||||
" def _hash_function(self, key):\n",
|
||||
" return key % self.size\n",
|
||||
"\n",
|
||||
" def set(self, key, value) :\n",
|
||||
" hash_index = self._hash_function(key) \n",
|
||||
" def set(self, key, value):\n",
|
||||
" hash_index = self._hash_function(key)\n",
|
||||
" for item in self.table[hash_index]:\n",
|
||||
" if item.key == key:\n",
|
||||
" item.value = value\n",
|
||||
" return\n",
|
||||
" self.table[hash_index].append(Item(key, value))\n",
|
||||
"\n",
|
||||
" def get(self, key) :\n",
|
||||
" hash_index = self._hash_function(key) \n",
|
||||
" def get(self, key):\n",
|
||||
" hash_index = self._hash_function(key)\n",
|
||||
" for item in self.table[hash_index]:\n",
|
||||
" if item.key == key:\n",
|
||||
" return item.value\n",
|
||||
" raise KeyError('Key not found') \n",
|
||||
" raise KeyError('Key not found')\n",
|
||||
"\n",
|
||||
" def remove(self, key) :\n",
|
||||
" hash_index = self._hash_function(key) \n",
|
||||
" for index, item in enumerate(self.table[hash_index]) :\n",
|
||||
" def remove(self, key):\n",
|
||||
" hash_index = self._hash_function(key)\n",
|
||||
" for index, item in enumerate(self.table[hash_index]):\n",
|
||||
" if item.key == key:\n",
|
||||
" del self.table[hash_index][index]\n",
|
||||
" return\n",
|
||||
" raise KeyError('Key not found') "
|
||||
" raise KeyError('Key not found')"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
@@ -1,38 +1,38 @@
|
||||
class Item(object) :
|
||||
class Item(object):
|
||||
|
||||
def __init__(self, key, value) :
|
||||
def __init__(self, key, value):
|
||||
self.key = key
|
||||
self.value = value
|
||||
|
||||
|
||||
class HashTable(object) :
|
||||
class HashTable(object):
|
||||
|
||||
def __init__(self, size) :
|
||||
def __init__(self, size):
|
||||
self.size = size
|
||||
self.table = [[] for _ in range(self.size) ]
|
||||
self.table = [[] for _ in range(self.size)]
|
||||
|
||||
def _hash_function(self, key) :
|
||||
def _hash_function(self, key):
|
||||
return key % self.size
|
||||
|
||||
def set(self, key, value) :
|
||||
hash_index = self._hash_function(key)
|
||||
def set(self, key, value):
|
||||
hash_index = self._hash_function(key)
|
||||
for item in self.table[hash_index]:
|
||||
if item.key == key:
|
||||
item.value = value
|
||||
return
|
||||
self.table[hash_index].append(Item(key, value))
|
||||
|
||||
def get(self, key) :
|
||||
hash_index = self._hash_function(key)
|
||||
def get(self, key):
|
||||
hash_index = self._hash_function(key)
|
||||
for item in self.table[hash_index]:
|
||||
if item.key == key:
|
||||
return item.value
|
||||
raise KeyError('Key not found')
|
||||
raise KeyError('Key not found')
|
||||
|
||||
def remove(self, key) :
|
||||
hash_index = self._hash_function(key)
|
||||
for index, item in enumerate(self.table[hash_index]) :
|
||||
def remove(self, key):
|
||||
hash_index = self._hash_function(key)
|
||||
for index, item in enumerate(self.table[hash_index]):
|
||||
if item.key == key:
|
||||
del self.table[hash_index][index]
|
||||
return
|
||||
raise KeyError('Key not found')
|
||||
raise KeyError('Key not found')
|
||||
|
Reference in New Issue
Block a user