ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ไบนารี (อาร์เรย์ที่ประกอบด้วย 0 และ 1) เท่านั้น arr เป็นอาร์กิวเมนต์เดียว ฟังก์ชันของเราควรหาจำนวนสูงสุดของ 1 วินาทีที่ต่อเนื่องกันในอาร์เรย์นี้ หากเราสามารถพลิกได้ไม่เกิน 1 วินาที
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr = [1, 0, 1, 1, 0];
จากนั้นผลลัพธ์ควรเป็น −
const output = 4;
คำอธิบายผลลัพธ์
หากเราพลิก 0 ที่ดัชนี 1 ในอาร์เรย์ เราจะได้ 4 1 วินาทีติดต่อกัน
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [1, 0, 1, 1, 0];
const findMaximumOne = (nums = []) => {
let count = 0;
let first = -1;
let i =0, j = 0;
let res = -Infinity;
while(j < nums.length){
if(nums[j] === 1){
res = Math.max(res, j-i+1);
}else{
count++;
if(count==2){
i = first + 1;
count--;
};
first = j;
};
j++;
};
return res;
};
console.log(findMaximumOne(arr)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
4