es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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*
Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Se inicializa una tabla hash vacía llamada numbersHashMap.
    2. Se crea una variable de marcador llamada number que itera a través de la matriz.
    3. Se resta el number actual del targetSum para obtener el match, que representa el otro número necesario para alcanzar la suma objetivo (targetSum = match + number).
    4. Se verifica si match existe en la tabla hash numbersHashMap.
    5. Si match existe en numbersHashMap, entonces devuelve una matriz que contiene match y number, que son los dos números necesarios para alcanzar la suma objetivo.
    6. Si match no existe en numbersHashMap, entonces se agrega el number actual a la tabla hash numbersHashMap 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.

Comments are closed.