在Python中查找翻转k位后最长的1集合的长度

在Python中查找翻转k位后最长的1集合的长度

假设我们有一个二进制列表,在这里只有1和0可用,我们还有另一个数字k。我们最多可以将k个0设置为1,我们必须找到包含所有1的最长子列表的长度。

因此,如果输入是nums = [0,1,1,0,0,1,1] k = 2,则输出将为6,因为我们可以将中间的两个0设置为1,然后列表变为[0,1,1,1,1,1,1]。

为了解决这个问题,我们将按照以下步骤进行操作:

  • 零 := 0,答案:= 0,j:= 0
  • 对于nums中的每个索引i和值n,执行以下操作
    • 零 := 零+(当n与0相同时为1,否则为0)
    • 当零>k时,重复
      • 零 := 零-(当nums [j]与0相同时为1,否则为0)
      • j:= j + 1
    • 如果i-j + 1>答案,则
      • 答案:= i-j + 1
  • 返回答案

下面是一个实现示例,以便更好地理解 –

更多Python相关文章,请阅读:Python 教程

示例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程