Skip to content

1586. Longest Subarray Of 1s After Deleting One Element

Array Dynamic Programming Sliding Window

Problem - Longest Subarray Of 1s After Deleting One Element

Medium

Given a binary array nums, you should delete one element from it.

Return the size of the longest non-empty subarray containing only 1's in the resulting array. Return 0 if there is no such subarray.

 

Example 1:

Input: nums = [1,1,0,1]
Output: 3
Explanation: After deleting the number in position 2, [1,1,1] contains 3 numbers with value of 1's.

Example 2:

Input: nums = [0,1,1,1,0,1,1,0,1]
Output: 5
Explanation: After deleting the number in position 4, [0,1,1,1,1,1,0,1] longest subarray with value of 1's is [1,1,1,1,1].

Example 3:

Input: nums = [1,1,1]
Output: 2
Explanation: You must delete one element.

 

Constraints:

  • 1 <= nums.length <= 105
  • nums[i] is either 0 or 1.

Solutions

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class Solution:
    def longestSubarray(self, nums: List[int]) -> int:
        count = j = 0

        for i, num in enumerate(nums):
            count += num ^ 1
            if count > 1:
                count -= nums[j] ^ 1
                j += 1

        return len(nums) - j - 1

Submission Stats:

  • Runtime: 29 ms (86.19%)
  • Memory: 21.8 MB (30.32%)