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

การตรวจสอบการแบ่งอาร์เรย์เท่ากัน (Equal Partition) - JavaScript

ตรวจสอบว่าสามารถแบ่งอาร์เรย์เป็น 2 กลุ่มได้หรือไม่: 1 สมาชิก และอีกส่วน ที่ผลคูณของอีกส่วนเท่ากับสมาชิกตัวนั้น

ตัวอย่าง

Input: [1, 56, 2, 4, 7]
56 = 1 × 2 × 4 × 7 = 56 → true

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

const arr = [1, 56, 2, 4, 7];

const isEqualPartition = arr => {
  const creds = arr.reduce((acc, val) => {
    let { prod, max } = acc;
    if (val > max || !max) {
      prod *= (max || 1); // คูณค่าสูงสุดเดิม
      max = val;          // อัปเดตค่าสูงสุดใหม่
    } else {
      prod *= val;        // คูณค่าที่ไม่ใช่ค่าสูงสุด
    }
    return { prod, max };
  }, { prod: 1, max: null });

  return creds.max === creds.prod;
};

console.log(isEqualPartition(arr));

การทำงาน

  • หาค่าสูงสุด (max) และผลคูณของค่าอื่นทั้งหมด (prod)
  • ถ้า max === prod → true
  • สมมติว่ามีค่าสูงสุดเพียงค่าเดียวที่เป็น candidate

ผลลัพธ์

true

ข้อจำกัด: ทำงานได้ก็ต่อเมื่อมีค่าสูงสุดเพียงค่าเดียวที่เป็น candidate สำหรับกรณีทั่วไปต้องตรวจสอบทุกสมาชิก