Marzo de 706. Diseño de mapeo hash

 

class MyHashMap:

    def __init__(self):
        """
        Initialize your data structure here.
        """
        #self.hashmap = dict()
        #self.hashmap = [-1]*1000001
        self.map = [[-1] * 1000 for _ in range(1001)]

    def put(self, key: int, value: int) -> None:
        """
        value will always be non-negative.
        """
        #self.hashmap[key]=value
        row,col = key//1000,key%1000
        self.map[row][col] = value
    def get(self, key: int) -> int:
        """
        Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key
        """
        # if key in self.hashmap:
        #     return self.hashmap[key]
        # else:
        #     return -1

        #return self.hashmap[key]

        row,col = key//1000, key%1000
        return self.map[row][col]    
    def remove(self, key: int) -> None:
        """
        Removes the mapping of the specified value key if this map contains a mapping for the key
        """
        # if key in self.hashmap:
        #     del self.hashmap[key]
        #self.hashmap[key]=-1

        row,col = key//1000, key%1000
        self.map[row][col]=-1    
# Your MyHashMap object will be instantiated and called as such:
# obj = MyHashMap()
# obj.put(key,value)
# param_2 = obj.get(key)
# obj.remove(key)

De hecho, esta pregunta es una implementación del código fuente del mapeo hash.

  • Es relativamente sencillo llamar directamente al diccionario encapsulado. Se puede utilizar AC pero no se responde al punto de investigación de esta pregunta.
  • Use una matriz súper grande, el índice de la matriz súper grande es la clave y el valor de la matriz es el valor
  • Use una matriz bidimensional relativamente pequeña, esta clase de ventaja es similar al mapeo de conflictos hash, puede haber varias asignaciones en una clave, luego usamos la segunda dimensión de la matriz para hacer un proceso, de modo que podamos obtener el valor con precisión Arriba
    • clave-cubo-fila-hash // 1000
    • col-Encuentra la ubicación específica donde se almacena la clave-key% 1000
    • El propósito de esto es ahorrar espacio, lo que se denomina método de cremallera de longitud fija. 

Supongo que te gusta

Origin blog.csdn.net/weixin_37724529/article/details/114853774
Recomendado
Clasificación