LeetCodeDiary

A Diary for solving LeetCode problems

View on GitHub
'''
Description: 
Autor: Au3C2
Date: 2020-12-03 12:28:52
LastEditors: Au3C2
LastEditTime: 2020-12-03 12:29:52
'''
class Solution:
    def longestOnes(self, A: List[int], K: int) -> int:
        n = len(A)
        if K >= n :
            return K
        if n == 0:
            return 0
        if sum(A) == 0:
            return K
        
        count = [0,0]
        lp = 0 #左指针
        max_len = K + 1
        cur_len = 0
        for rp in range(n): #右指针
            cur_len += 1
            count[A[rp]] += 1
            if cur_len > max_len and count[1] + K >= cur_len:
                max_len = cur_len
            if count[1] + K < cur_len:
                count[A[lp]] -= 1
                lp += 1
                cur_len -= 1
        return max_len
        
# 这道题是 No.0424 的简化