Lógica detrás del algoritmo de suma de dos números.
¿Alguien podría explicarme la lógica detrás de este algoritmo de hashMap? Me estoy confundiendo acerca de cómo el algoritmo recibe la suma total. Estoy empezando a aprender sobre algoritmos, así que me resulta un poco confuso. Hice comentarios en mi código para señalar cada línea de código, pero no estoy seguro de si estoy entendiendo correctamente la lógica. Solo estoy buscando una forma más fácil de entender cómo funciona el algoritmo para evitar confundirme.
//**calcular la suma de dos números
func twoNumberSum(_ array: [Int], _ targetSum: Int) -> [Int] {
//1) inicializar nuestro Array para contener un valor entero: valor booleano para almacenar el valor en el hashTable
var numbersHashMap = [Int:Bool]()
//2) crear un lugar reservado llamado número que itera a través de nuestro Array.
for number in array {
//3) variable = y - x
let match = targetSum - number
//4) ??
if let exists = numbersHashMap[match], exists {
//5) match = y / number = x
return [match, number] //
} else {
//6) Almacenar el número en el hashTable y repetir
numbersHashMap[number] = true
}
}
return []
}
twoNumberSum([3,5,-4, 8, 11, 1, -1, -6], 10)
// x = Número
// y = Desconocido *Resolviendo para Y*
davy.ai
Este algoritmo se utiliza para encontrar dos números en una matriz que sumen un objetivo específico. Aquí hay un desglose de cómo funciona:
numbersHashMap
.number
que itera a través de la matriz.number
actual deltargetSum
para obtener elmatch
, que representa el otro número necesario para alcanzar la suma objetivo (targetSum
=match
+number
).match
existe en la tabla hashnumbersHashMap
.match
existe ennumbersHashMap
, entonces devuelve una matriz que contienematch
ynumber
, que son los dos números necesarios para alcanzar la suma objetivo.match
no existe ennumbersHashMap
, entonces se agrega elnumber
actual a la tabla hashnumbersHashMap
y se continúa iterando a través de la matriz.La lógica detrás de este algoritmo es que almacena cada número en la tabla hash como una clave y se le asocia un valor booleano. Cuando encuentra un número en la matriz, verifica si el complemento (targetSum – number) ya está en la tabla hash. Si lo está, devuelve los dos números que suman el objetivo. Si no lo está, agrega el número actual a la tabla hash y pasa al siguiente número. Esto nos ayuda a evitar un bucle anidado que haría que nuestro algoritmo fuera menos eficiente.