revert to origin

This commit is contained in:
Vu
2021-03-26 23:50:38 +07:00
parent c0531421c8
commit 9b92b8963b
45 changed files with 3384 additions and 3384 deletions

View File

@@ -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')"
]
}
],

View File

@@ -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')