Skip to content

1493. Longest Subarray of 1's After Deleting One Element

Description

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

Solution: Sliding Window

  • Time complexity: O(n)
  • Space complexity: O(1)

 

JavaScript

js
/**
 * @param {number[]} nums
 * @return {number}
 */
const longestSubarray = function (nums) {
  let left = (currentSize = result = 0);
  let isDelete = false;

  for (const [index, value] of nums.entries()) {

    if (value) currentSize += 1;
    else {
      isDelete ? (currentSize = index - left - 1) : (isDelete = true);

      left = index;
    }
    result = Math.max(result, currentSize);
  }
  return isDelete ? result : result - 1;
};

Released under the MIT license