-
类型:可变窗口
-
特点:统计元素个数
-
题目:给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。
-
思路:01-设置维护变量,需要统计元素个数所以用hashmap;02-移动right过程中更新维护变量;03-当0的个数到达k,right不动,移动left;04-找到合适的位置输出结果。
-
经验:统计元素个数用hashmap
def longestOnes(self, nums: List[int], k: int) -> int:
length,max_length,hashmap=0,0,defaultdict(int) #维护
left=0
#移动右窗口更新
for right in range(len(nums)):
length+=1
hashmap[nums[right]]+=1
#right不动,更新left
while hashmap[0]>k:
hashmap[nums[left]]-=1
length-=1
left+=1
#返回结果
max_length=max(max_length,length)
return max_length
- 明日计划:1208. 尽可能使字符串相等