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

การจัดเรียงและหาผลรวมความต่างของอาร์เรย์ใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน 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)`