程序通过在Python中翻转k位来找到最长1的集合的长度
假设我们有一个二进制列表,那么这里只有1和0可用,我们还有另一个数字k。我们最多可以将k0设置为1s,我们必须找到包含所有1的最长子列表的长度。
因此,如果输入类似于nums=[0,1,1,0,0,1,1]k=2,则输出将为6,因为我们可以将两个中间的0设置为1,然后列表变为[0,1,1,1,1,1,1]。
为了解决这个问题,我们将遵循以下步骤-
零:=0,ANS:=0,j:=0
对于以数字为单位的每个索引i和值n
回答:=i-j+1
零:=零-(当nums[j]与0相同时为1,否则为0)
j:=j+1
零:=零+(当n等于0时为1,否则为0)
当零>k时
如果i-j+1>ans,则
返回ans
让我们看下面的实现以更好地理解-
示例
class Solution: def solve(self, nums, k): zeros = 0 ans = 0 j = 0 for i, n in enumerate(nums): zeros += n == 0 while zeros > k: zeros -= nums[j] == 0 j += 1 if i - j + 1 > ans: ans = i - j + 1 return ans ob = Solution()nums = [0, 1, 1, 0, 0, 1, 1] k = 2 print(ob.solve(nums, k))
输入值
[0, 1, 1, 0, 0, 1, 1], 2
输出结果
6