Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาค่าที่ทำให้ผลรวมค่าสัมบูรณ์ของความต่างน้อยที่สุด (Absolute Values Sum Minimization) ใน JavaScript

ได้รับอาร์เรย์ตัวเลขที่เรียงแล้ว ต้องหาจำนวนเต็ม 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