Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

174
Views
Encuentre los índices de un par de elementos consecutivos de una matriz determinada cuya suma sea igual a un número de destino específico, si no se encuentra ningún par, devuelva {-1, -1]

Estoy escribiendo una función JavaScript sumPair(numbers, target) para encontrar los índices de un par de elementos consecutivos de una matriz dada cuya suma es igual a un número objetivo específico. La función debe devolver una matriz de los índices del par de elementos consecutivos o la matriz [-1, -1] si no se encuentra un par. Mi función funciona si no necesito devolver [-1, -1] cuando no se encuentra ningún par, pero devuelve [-1, -1] incluso si hay un par.

 var sumPair = function(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] } else if (nums[i] + nums[j] !== target) { return [-1, -1] } } } }; document.write(sumPair([10, 20, 10, 40, 50, 60, 70, 30], 50));

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

El problema principal es que su declaración else if no está dentro del ciclo, sin embargo, si la coloca en el ciclo, devolverá falso en el primer falso que obtenga, en lugar de recorrer todo el conjunto.

En su lugar, devuelva el caso base y, si hay una coincidencia, devolverá la coincidencia antes de que se active el caso base.

 <!DOCTYPE html> <html> <head> </head> <body> <script type="text/javascript"> var sumPair = function(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([-1,-1]) }; document.write(sumPair([10,20,10,40,50,60,70,30],50)); </script> </script> </body> </html>
about 4 years ago · Juan Pablo Isaza Report

0

Puede omitir el segundo bucle for y solo verificar i+1

 var sumPair = function(nums, target) { for (let i = 0; i < nums.length - 1; i++) { if(nums[i] + nums[i+1] == target) { return [nums[i], nums[i+1]] } } return [-1,-1] };
about 4 years ago · Juan Pablo Isaza Report

0

Esta respuesta contiene dos soluciones, una para buscar los dos primeros índices de índices consecutivos (¡literalmente!) y otra de dos índices cuya suma de valores es el valor buscado.

  1. Búsqueda de índices consecutivos.

    Simplemente itere desde el índice 1 hasta que sea más pequeño que la longitud de la matriz. Compruebe la suma del artículo anterior y el artículo real. devolver sus índices.

     const sumPair = (nums, target) => { for (let i = 1; i < nums.length; i++) { if (nums[i - 1] + nums[i] === target) return [i - 1, i]; } return [-1, -1]; }; console.log(sumPair([10, 20, 10, 40, 50, 60, 70, 30], 50));

  2. Busque algunos índices más pequeños.

    Comience a iterar desde cero y almacene el primer índice encontrado en un objeto y verifique si la suma es true .

     const sumPair = (nums, target) => { const indices = {}; for (let i = 0; i < nums.length; i++) { if (nums[i] in indices) return [indices[nums[i]], i]; indices[target - nums[i]] ??= i; } return [-1, -1]; }; console.log(sumPair([10, 20, 10, 40, 50, 60, 70, 30], 50));

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!