ปัญหา
ฟังก์ชัน 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