From d0580191f5db4e960c1b9ccbcca2acf84fe179bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=92=D0=B0=D1=81?= =?UTF-8?q?=D0=B8=D0=BB=D1=8C=D0=B5=D0=B2?= Date: Fri, 10 Oct 2025 20:05:50 +0300 Subject: [PATCH] feat: [LeetCode #1493] Longest Subarray Of 1s After Deleting One Element MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Тип: sliding window Сложность: medium Временная сложность: O(n) Пространственная сложность: O(1) - Ссылка: https://leetcode.com/problems/longest-subarray-of-1s-after-deleting-one-element/ --- .../__init__.py | 0 .../solution.py | 16 ++++++++++++++++ ...subarray_of_1s_after_deleting_one_element.py | 17 +++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 src/sliding_window/longest_subarray_of_1s_after_deleting_one_element/__init__.py create mode 100644 src/sliding_window/longest_subarray_of_1s_after_deleting_one_element/solution.py create mode 100644 tests/test_longest_subarray_of_1s_after_deleting_one_element.py diff --git a/src/sliding_window/longest_subarray_of_1s_after_deleting_one_element/__init__.py b/src/sliding_window/longest_subarray_of_1s_after_deleting_one_element/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/sliding_window/longest_subarray_of_1s_after_deleting_one_element/solution.py b/src/sliding_window/longest_subarray_of_1s_after_deleting_one_element/solution.py new file mode 100644 index 0000000..b60c81f --- /dev/null +++ b/src/sliding_window/longest_subarray_of_1s_after_deleting_one_element/solution.py @@ -0,0 +1,16 @@ +from typing import List + + +class Solution: + def longestSubarray(self, nums: List[int]) -> int: + left, max_length, zeros_counter = 0, 0, 0 + + for index in range(len(nums)): + if nums[index] == 0: + zeros_counter += 1 + while zeros_counter > 1: + if nums[left] == 0: + zeros_counter -= 1 + left += 1 + max_length = max(max_length, index - left) + return max_length diff --git a/tests/test_longest_subarray_of_1s_after_deleting_one_element.py b/tests/test_longest_subarray_of_1s_after_deleting_one_element.py new file mode 100644 index 0000000..370cd72 --- /dev/null +++ b/tests/test_longest_subarray_of_1s_after_deleting_one_element.py @@ -0,0 +1,17 @@ +import pytest +from src.sliding_window.longest_subarray_of_1s_after_deleting_one_element.solution import ( + Solution, +) + + +@pytest.mark.parametrize( + "nums, expected", + [ + ([1, 1, 0, 1], 3), + ([0, 1, 1, 1, 0, 1, 1, 0, 1], 5), + ([1, 1, 1], 2), + ], +) +def test_longest_subarray(nums, expected): + solution = Solution() + assert solution.longestSubarray(nums) == expected