程序通过在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
热门推荐
10 简短朋友旅行祝福语大全
11 中考祝福语简短卡片大全
12 新年祝福语和语句简短
13 给宝贝开学祝福语简短
14 姐妹结婚快乐祝福语简短
15 男朋友祝福语简短新年
16 许愿星姐妹祝福语简短
17 中秋祝福语送朋友简短
18 股市祝福语简短10字