ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์จำนวนเต็ม ฟังก์ชันควรหาผลรวมความต่างระหว่างคู่ติดกันในอาร์เรย์เรียงลำดับลดลง
เช่น ถ้าอาร์เรย์คือ:
[6, 2, 15]
ผลลัพธ์ควรเป็น:
(15 - 6) + (6 - 2) = 13
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const arr = [6, 2, 15];
const sumDifference = (arr = []) => {
const descArr = arr.sort((a, b) => b - a);
if (descArr.length <= 1) {
return 0;
}
let total = 0;
for (let i = 0; i < descArr.length - 1; i++) {
total += (descArr[i] - descArr[i + 1]);
}
return total;
};
console.log(sumDifference(arr));
ผลลัพธ์
13
คำอธิบายเพิ่มเติม
เรียงลด: [15, 6, 2] ความต่างติดกัน: (15-6)=9, (6-2)=4 → 13 สังเกต: ผลรวมความต่างติดกันในลำดับลด = max - min (telescoping sum) 15-2=13 สามารถคำนวณ O(1) ได้: `Math.max(...arr) - Math.min(...arr)`