ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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