Si k es el tamaño de bits de los enteros, puede calcular el Max en tiempo O(nk) .
Básicamente, el problema es que, dado n , k -bitk enteros Si , encuentre i,j tal que Si⊕Sj es máximo.
cada como una cadena binaria (mirando la representación binaria) y crea un trie a partir de esas cadenas. Esto lleva tiempo.SiO(nk)
Ahora, para cada , intentas recorrer el complemento de en el trie que creaste (tomando la mejor rama básicamente en cada paso), encontrando una tal que sea máxima.SjSjj′Sj⊕Sj′
Haga esto para cada , y encontrará la respuesta en el tiempo .jO(nk)
Dado que sus enteros están acotados, este algoritmo para max es básicamente lineal, y también lo es el algoritmo para min obtenido al ordenar (ya que la clasificación se puede hacer en tiempo lineal).
Por cierto, si no hubiera límites, puede reducir la distinción de elementos a la versión mínima.