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

การหาผลคูณสามตัวมากที่สุดแบบสะสมในอาร์เรย์ด้วย JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มเป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องสร้างอาร์เรย์ใหม่ความยาวเท่าเดิมตามเกณฑ์ต่อไปนี้

สมาชิกแต่ละตัวในอาร์เรย์ผลลัพธ์ควรเป็นผลคูณของสามตัวเลขที่มากที่สุดที่พบจนถึงตำแหน่งนั้น ถ้ายังไม่พบสามตัว (ดัชนีน้อยกว่า 3) ให้ค่าเป็น -1 และแม้จะใช้ค่าที่ซ้ำกันคำนวณได้ แต่ค่าที่ซ้ำต้องอยู่ตำแหน่งต่างกัน

ตัวอย่าง

ถ้าอาร์เรย์นำเข้าคือ:

const arr = [1, 2, 3, 4, 5, 6];

ผลลัพธ์ควรเป็น:

const output = [-1, -1, 6, 24, 60, 120];

ตัวอย่างโค้ด

const arr = [1, 2, 3, 4, 5, 6];
const maximumTripleProduct = (arr = []) => {
  const res = [];
  const max = [arr[0], arr[1], arr[2]];
  res[0] = res[1] = -1;
  res[2] = arr[0] * arr[1] * arr[2];
  for(let i = 3; i < arr.length; i++) {
    max.push(arr[i]);
    max.sort((a, b) => b - a);
    max.pop();
    res[i] = max[0] * max[1] * max[2];
  }
  return res;
};
console.log(maximumTripleProduct(arr));

ผลลัพธ์

[-1, -1, 6, 24, 60, 120]