在 Python 中计算好的子数组数量的程序

假设我们有一个名为 nums 的数组和另一个值 k。我们必须找到好的子数组的数量。如果一个子数组上有 k 个奇数,则称该子数组为好子数组。

因此,如果输入类似于 nums = [1,1,2,1,1], k = 3,那么输出将为 2,因为有两个子数组 [1,1,2,1] 和 [1,2 ,1,1]。

示例

让我们看看以下实现以获得更好的理解 -

def solve(nums, k):

   odd_i = []

   for i in range(len(nums)):

      if nums[i] % 2 == 1:

         odd_i.append(i)

   start = 0

   end = k - 1

   i = 0

   count = 0

   while end < len(odd_i):

      if end == len(odd_i) - 1:

         j = len(nums) - 1

      else:

         j = odd_i[end + 1] - 1

      count = count + (odd_i[start] - i + 1) * (j - odd_i[end] + 1)

      i = odd_i[start] + 1

      start = start + 1

      end = end + 1

   return count

nums = [1,1,2,1,1]

k = 3

print(solve(nums, k))

输入

[1,2,3,4,5,6,7,8]
输出结果
2

以上是 在 Python 中计算好的子数组数量的程序 的全部内容, 来源链接: utcz.com/z/351608.html

回到顶部