ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับไบนารี arr (อาร์เรย์ที่มีเพียง 0 หรือ 1), arr เป็นอาร์กิวเมนต์แรก และตัวเลข num เป็นอาร์กิวเมนต์ที่สอง
เราสามารถเปลี่ยนได้มากที่สุด num 0s ที่มีอยู่ในอาร์เรย์เป็น 1s และฟังก์ชันของเราควรคืนค่าความยาวของ subarray ที่ยาวที่สุด (ต่อเนื่องกัน) ที่มีเพียง 1s หลังจากทำการเปลี่ยนแปลงเหล่านี้
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2;
จากนั้นผลลัพธ์ควรเป็น −
const output = 6;
คำอธิบายผลลัพธ์
เพราะหลังจากเปลี่ยนศูนย์สองตัวเป็น 1 แล้ว 6 องค์ประกอบสุดท้ายของอาร์เรย์จะเป็น 1
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2; const longestOnes = (arr = [], num = 1) => { let max = 0; let left = 0; let curr = num; for(let right = 0; right < arr.length; right++){ if(arr[right] === 0){ curr -= 1; }; while(curr < 0){ if(arr[left] === 0){ curr += 1; }; left += 1; }; max = Math.max(max, right - left + 1); }; return max; }; console.log(longestOnes(arr, num));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
6