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

ตัวต่อเนื่องที่มีการบิดใน JavaScript


ปัญหา

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