Solución
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