统计每个0相邻的两边的1的个数,找出最大的
如果全为1要减去1
def longestSubarray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
count = 0
tmp = 0
res = 0
for num in nums:
if num == 1:
count += 1
else:
res = max(count+tmp,res)
tmp = count
count = 0
res = max(count+tmp,res) #for结束后要加一次判断
if len(nums) == res:
res -= 1
return res
经典滑窗,注意要删一个,窗口大小减一
def longestSubarray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
l = 0
res = 0
count = 0
for r in range(len(nums)):
if nums[r] == 0:
count += 1
while count > 1:
if nums[l] == 0:
count -= 1
l += 1
res = max(r-l,res)
return res