Solución

@azoreno2_39cecc06
·hace 6dTypeScript
solution.tsTypeScript
function closestPairSum(numbers: number[], target: number): number[] {
  let leftIdx = 0;
  let rightIdx = numbers.length - 1;
  let bestPair:number[] = [numbers[leftIdx], numbers[rightIdx]];
  let minDiff = numbers[rightIdx];

  while (leftIdx < rightIdx){
    let current_sum = numbers[leftIdx] + numbers[rightIdx];
    const actualAbsoluteDiff = Math.abs(target - current_sum) 
    // Update to the closest pair
    if ( actualAbsoluteDiff <= minDiff){
        if(actualAbsoluteDiff == minDiff){
          // choose better option
          const sum1 = bestPair[0] + bestPair[1]
          if (current_sum < sum1 || current_sum == sum1){
            minDiff = actualAbsoluteDiff
            bestPair = [numbers[leftIdx], numbers[rightIdx]]
          }
        }else{
          minDiff = actualAbsoluteDiff
          bestPair = [numbers[leftIdx], numbers[rightIdx]]
        }
    }

    if (current_sum < target){
      leftIdx += 1
    }else if (current_sum > target){
      rightIdx -= 1
    }else{
      leftIdx += 1;
      rightIdx -= 1;
    }
  }

  return bestPair
}

// No modificar: necesario para evaluar el resultado.
export { closestPairSum };
0respuestas
Respuestas
0

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.
Markdown