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

ปัญหาห้องประชุม 2 (Meeting Rooms 2) ใน JavaScript

เราจะได้รับอาร์เรย์ของอาร์เรย์ แต่ละซับอาร์เรย์มีสองสมาชิก แสดงเวลาเริ่มต้นและสิ้นสุดของการประชุม

ภารกิจคือหาจำนวนการประชุมสูงสุดที่คนหนึ่งสามารถเข้าร่วมได้โดยหลีกเลี่ยงการชนกันของเวลา ฟังก์ชันต้องคืนตัวเลขนี้

ตัวอย่าง

ถ้าอาร์เรย์เวลาประชุมคือ:

const arr = [[5, 40], [10, 20], [25, 35]];

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

const output = 2;

เพราะไม่สามารถเข้าร่วมทั้งสามได้เพราะเวลาทับซ้อน แต่ [10, 20] และ [25, 35] เข้าได้

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

const arr = [[5, 40], [10, 20], [25, 35]];
const canAttendAll = (arr = []) => {
  const times = new Set();
  const { length } = arr;
  for (let i = 0; i < length; i += 1) {
    for (let j = arr[i][0]; j < arr[i][1]; j += 1) {
      if (times.has(j)) {
        return false;
      } else {
        times.add(j);
      }
    }
  }
  return true;
};
console.log(canAttendAll(arr));

ผลลัพธ์

false