程序通过在Python中翻转k位来找到最长1的集合的长度

假设我们有一个二进制列表,那么这里只有1和0可用,我们还有另一个数字k。我们最多可以将k 0设置为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
    猜你喜欢