程序通过在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