Longest Subarray of 1's After Deleting One Element LeetCode solution in Python
1class Solution:2def longestSubarray(self, nums: List[int]) -> int:3n = len(nums)4pre, suf = [1] * n, [1] * n5if nums[0] == 0:6pre[0] = 07if nums[-1] == 0:8suf[-1] = 0910for i in range(1, n):11if nums[i] == 1 and nums[i - 1] == 1:12pre[i] = pre[i - 1] + 113elif nums[i] == 0:14pre[i] = 01516for i in range(n - 2, -1, -1):17if nums[i] == 1 and nums[i + 1] == 1:18suf[i] = suf[i + 1] + 119elif nums[i] == 0:20suf[i] = 02122ans = 023for i in range(n):24if i == 0:25ans = max(ans, suf[i + 1])26elif i == n - 1:27ans = max(ans, pre[i - 1])28else:29ans = max(ans, pre[i - 1] + suf[i + 1])3031return ans