Longest Subarray of 1's After Deleting One Element LeetCode solution in Python

1
class Solution:
2
def longestSubarray(self, nums: List[int]) -> int:
3
n = len(nums)
4
pre, suf = [1] * n, [1] * n
5
if nums[0] == 0:
6
pre[0] = 0
7
if nums[-1] == 0:
8
suf[-1] = 0
9

10
for i in range(1, n):
11
if nums[i] == 1 and nums[i - 1] == 1:
12
pre[i] = pre[i - 1] + 1
13
elif nums[i] == 0:
14
pre[i] = 0
15

16
for i in range(n - 2, -1, -1):
17
if nums[i] == 1 and nums[i + 1] == 1:
18
suf[i] = suf[i + 1] + 1
19
elif nums[i] == 0:
20
suf[i] = 0
21

22
ans = 0
23
for i in range(n):
24
if i == 0:
25
ans = max(ans, suf[i + 1])
26
elif i == n - 1:
27
ans = max(ans, pre[i - 1])
28
else:
29
ans = max(ans, pre[i - 1] + suf[i + 1])
30

31
return ans

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0