Actualmente estoy practicando JS y encontré este problema en Leetcode:
dos suma
Dada una matriz de números enteros y un objetivo entero, devuelva los índices de los dos números de modo que sumen el objetivo.
Puede suponer que cada entrada tendría exactamente una solución y no puede usar el mismo elemento dos veces.
Puede devolver la respuesta en cualquier orden.
Ejemplo 1:
Entrada: nums = [2,7,11,15], objetivo = 9 Salida: [0,1] Salida: Como nums[0] + nums[1] == 9, devolvemos [0, 1].
Ejemplo 2:
Entrada: nums = [3,2,4], objetivo = 6 Salida: [1,2]
Ejemplo 3:
Entrada: nums = [3,3], objetivo = 6 Salida: [0,1]
Lo resolví con esto:
const twoSum = (nums, target) => { for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j < nums.length; j++) { if (nums[i] + nums[j] === target) return [i, j]; } } return null; };Pero luego revisé la discusión en busca de otras soluciones y me topé con esta:
var twoSum = function(nums, target) { for(let [k,v] of nums.entries()){ if(nums.slice(k+1).lastIndexOf(target-v)>-1) return [k,nums.lastIndexOf(target-v)]}};https://leetcode.com/problems/two-sum/discuss/1543367/3-Lines-JavaScript-Two-Sum
Estoy confundido acerca de cómo se supone que funciona, especialmente en la línea 3. Intenté registrar cada paso en la consola, pero terminé confundiéndome aún más.
Agradecería cualquier ayuda. ¡Gracias!