ได้รับอาร์เรย์ตัวเลขที่เรียงแล้ว ต้องหาจำนวนเต็ม x ที่ทำให้ผลรวม |a[i] - x| น้อยที่สุด หากมีหลายค่า ให้เลือกค่าน้อยที่สุด
รู้ว่าสำหรับอาร์เรย์ที่เรียงแล้ว ค่าที่ทำให้ผลรวมต่ำสุดคือค่ามัธยฐาน (median) ซึ่งอยู่ที่ดัชนี Math.ceil(arr.length/2)-1
ตัวอย่างโค้ด
const arr = [2, 4, 7];
const absoluteValuesSumMinimization = (arr = []) => {
const res = [];
arr.forEach(num => {
const sum = arr.reduce((accum, next) => accum + Math.abs(next - num), 0);
res.push(sum);
});
const lowest = Math.min(...res);
return arr[res.indexOf(lowest)];
};
console.log(absoluteValuesSumMinimization(arr));
ผลลัพธ์
ค่าที่แสดงในคอนโซลจะเป็นดังนี้:
4