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

การลบช่วงเวลาที่ระบุไว้แล้วใน JavaScript


ปัญหา

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

อาร์เรย์ย่อยแต่ละอันของอาร์เรย์อินพุตของเราเป็นอาร์เรย์ของตัวเลขสองตัวพอดี ซึ่งระบุช่วงเวลา

ฟังก์ชันของเราควรลบช่วงเวลาทั้งหมดที่ครอบคลุมโดยช่วงอื่นในอาร์เรย์ arr ช่วง [a,b) ครอบคลุมโดยช่วง [c,d) ถ้าหาก c <=a และ b <=d เท่านั้น ในที่สุด ฟังก์ชันของเราก็ควรคืนค่าจำนวนช่วงที่เหลือในอาร์เรย์

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

const arr = [
   [2, 5],
   [5, 7],
   [3, 9]
];

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

const output = 2;

คำอธิบายผลลัพธ์:

ช่วงเวลา [5, 7] ครอบคลุมโดย [3, 9] ดังนั้นจึงลบออก

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr = [
   [2, 5],
   [5, 7],
   [3, 9]
];
const removeCovered = (arr = []) => {
   arr.sort(([a, b], [c, d]) => (a === c ? d - b : a - c));
   let last = arr[0];
   let count = arr.length;
   for(let i = 1; i < arr.length; i++){
      const [a, b] = last;
      const [c, d] = arr[i];
      if(c >= a && d <= b){
         count -= 1;
      }else{
         last = arr[i];
      };
   };
   return count;
};
console.log(removeCovered(arr));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

2