Medium
从数据量大小判断,肯定是要用时间复杂度\(O(n)\)算法求解
1
的数量,遇到0
时记录一下,第一次遇到,这个0
是可删除的。再次遇到0
,不能删除,比较较大的数,记录到结果中1
则直接返回数组长度-1
以上,尝试一下代码,AC!
python3
class Solution:
def longestSubarray(self, nums: List[int]) -> int:
if nums.count(1) == len(nums):
return len(nums) - 1
pc = 0
cnt = 0
r = 0
for i in nums:
if i == 1:
cnt += 1
else:
r = max(r, pc+cnt)
pc = cnt
cnt = 0
prev = i
r = max(r, pc+cnt)
return r