เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ไบนารี (อาร์เรย์ที่ประกอบด้วย 0 หรือ 1 เท่านั้น) เป็นอาร์กิวเมนต์เดียว
ฟังก์ชันควรค้นหาความยาวของอาร์เรย์ย่อยที่ต่อเนื่องกันของอาร์เรย์ที่ประกอบด้วย 1 เท่านั้นและส่งคืน
ตัวอย่างเช่น −
หากอาร์เรย์อินพุตเป็น −
const arr = [1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1];
จากนั้นผลลัพธ์ควรเป็น −
const output = 4;
เราจะใช้อัลกอริธึมหน้าต่างบานเลื่อนเพื่อจับภาพหน้าต่างที่ใหญ่ที่สุด (ขนาดใหญ่ที่สุด) ที่ประกอบด้วย 1 อันเท่านั้น
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1];
const findMaxConsecutiveOnes = (arr = []) => {
let left = 0;
let right = 0;
let max = 0;
while (right < arr.length) {
if (arr[right] === 0) {
if (right - left > max) {
max = right - left
};
right++;
left = right;
} else {
right++
};
};
return right - left > max ? right - left : max;
}
console.log(findMaxConsecutiveOnes(arr)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
4