Дан бинарный массив. Удалив ровно один элемент, верните длину наибольшего подмассива из одних единиц.
Примеры
Пример 1
Input: nums = [1,1,0,1]
Output: 3
Пояснение
После удаления элемента на позиции 2 остаётся [1,1,1] — три единицы.
Пример 2
Input: nums = [0,1,1,1,0,1,1,0,1]
Output: 5
Пояснение
После удаления элемента на позиции 4 наибольший подмассив из единиц — [1,1,1,1,1].
Пример 3
Input: nums = [1,1,1]
Output: 2
Пояснение
Нужно удалить ровно один элемент.
Решение
Решение
// Time Complexity: O(n) — один проход по массиву// Space Complexity: O(1) — только несколько переменныхvar longestSubarray = function(nums) { let left = 0; let zeros = 0; let result = 0; for (let right = 0; right < nums.length; right++) { if (nums[right] === 0) zeros++; // Если нулей в окне больше одного — сдвигаем левую границу while (zeros > 1) { if (nums[left] === 0) zeros--; left++; } // -1 потому что мы обязаны удалить ровно один элемент result = Math.max(result, right - left); } return result;};