Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การแยกอาร์เรย์ของตัวเลขออกเป็นสองอาร์เรย์ที่มีค่าเฉลี่ยเท่ากันใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มเป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

ฟังก์ชันจำเป็นต้องตรวจสอบว่ามีองค์ประกอบของอาร์เรย์อินพุตอยู่หรือไม่ว่าเมื่อแบ่งออกเป็นสองกลุ่ม (อาจ/อาจไม่มีองค์ประกอบเท่ากัน) ค่าเฉลี่ยของทั้งสองกลุ่มจะเท่ากัน หากมีเงื่อนไขดังกล่าวอยู่ ฟังก์ชั่นควรจะคืนค่า จริง เท็จ มิฉะนั้น

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตเป็น −

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

จากนั้นผลลัพธ์ควรเป็น −

const output = true;

เพราะค่าผสมคือ [8, 1, 5, 4] และ [6, 3, 2, 7] เนื่องจากทั้งสองกลุ่มมีค่าเฉลี่ย 4.5

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [6, 3, 2, 8, 1, 5, 7, 4];
const canHaveEqualAveragePartition = (arr = []) => {
   const sum = arr.reduce((acc, val) => acc + val);
   const array = Array(sum+1).fill(false).map(() =>
   Array(arr.length+1).fill(false));
   array[0][0] = true;
   for(let i=0; i < arr.length; ++i){
      for(let j=sum - arr[i];j>=0;--j){
         for(let k=arr.length-2;k>=0;--k){
            if(array[j][k]){
               array[j + arr[i]][k+1] = true;
               if((j + arr[i]) * (arr.length - k - 1) == (sum - j -arr[i]) * (k + 1)){
                  return true;
               }
            }
         }
      }
   }
   return false;
};
console.log(canHaveEqualAveragePartition(arr));

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล -

true