Estoy trabajando en este problema en leetcode usando el método .map , pero de alguna manera vuelve indefinido. ¿Alguien podría explicar por qué sucedió esto? Leí el documento y dice que .map generalmente devuelve una matriz.
var twoSum = function (nums, target) { for (let i = 0; i < nums.length; i++){ const num = nums[i]; nums.slice(i+1).map((element) => { if (num + element === target){ return [i, nums.indexOf(element, i+1)]; } }); } }Solo para agregar, esto es como un ejemplo inicial donde podemos usar dos patrones de puntero.
La primera configuración para aplicar dos punteros es ordenar la matriz.
Luego tome dos punteros, el primero que comienza en el índice 0 y el segundo que comienza en el último índice
Atraviese el bucle y verifique el objetivo e incremente y disminuya los punteros en consecuencia
var twoSum = function(nums, target) { nums.sort((a,b) => ab ) var startingIndex = 0 var lastIndex = nums.length-1; while(startingIndex<lastIndex){ if(nums[startingIndex] + nums[lastIndex] === target){ console.log(nums[startingIndex], nums[lastIndex]) startingIndex++; lastIndex--; } if(nums[startingIndex] + nums[lastIndex] < target){ startingIndex++; } if(nums[startingIndex] + nums[lastIndex] > target){ lastIndex--; } } }; console.log(twoSum([2, 7, 20, 13, 15], 33));Puede usar Map aquí para lograr el resultado de manera eficiente
var twoSum = function(nums, target) { const map = new Map(); for (let i = 0; i < nums.length; ++i) { if (map.has(nums[i])) return [map.get(nums[i]), i]; else map.set(target - nums[i], i); } }; console.log(twoSum([2, 7, 11, 15], 9));