<p>Given a binary array <code>nums</code>, you should delete one element from it.</p>

<p>Return <em>the size of the longest non-empty subarray containing only </em><code>1</code><em>&#39;s in the resulting array</em>. Return <code>0</code> if there is no such subarray.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> nums = [1,1,0,1]
<strong>Output:</strong> 3
<strong>Explanation:</strong> After deleting the number in position 2, [1,1,1] contains 3 numbers with value of 1&#39;s.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> nums = [0,1,1,1,0,1,1,0,1]
<strong>Output:</strong> 5
<strong>Explanation:</strong> After deleting the number in position 4, [0,1,1,1,1,1,0,1] longest subarray with value of 1&#39;s is [1,1,1,1,1].
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> nums = [1,1,1]
<strong>Output:</strong> 2
<strong>Explanation:</strong> You must delete one element.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
	<li><code>nums[i]</code> is either <code>0</code> or <code>1</code>.</li>
</ul>

class Solution:
    def diff(self, t):
        return t[1] - t[0]
    
    
    def longestSubarray(self, nums: List[int]) -> int:
        n = len(nums)
        s = sum(nums)
        if n - s < 2:
            return n - 1
        
        k = 1
        ones_series = []
        i = 0
        while i < n:
            if nums[i]:
                j = i
                while j < n:
                    if nums[j]:
                        j += 1
                    else:
                        ones_series.append((i, j))
                        i = j
                        break
                if j == n:
                    ones_series.append((i, j))
                    break
            i += 1
        print(ones_series)                
        if len(ones_series) == 0:
            return 0
        elif len(ones_series) == 1:
            return max(0, ones_series[0][1] - ones_series[0][0])
        else:
            result = 0
            for i in range(len(ones_series) - 1):
                res = self.diff(ones_series[i]) if ones_series[i+1][0] - ones_series[i][1] > 1 else self.diff(ones_series[i]) + self.diff(ones_series[i+1])
                result = max(result, res)
            return result
        
165