在Python中计数漂亮子数组的程序

在Python中计数漂亮子数组的程序

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

因此,如果输入如下nums = [1,1,2,1,1],k = 3,则输出将是2,因为有两个子数组[1,1,2,1]和[1,2,1,1]。

为了解决这个问题,我们将遵循以下步骤 –

  • odd_i:一个新列表

  • 对于 i 在范围 0 到 nums 的大小 – 1,做以下操作

    • 如果 nums[i] mod 2 等于 1,则
      • 在odd_i的末尾插入i
  • start := 0, end := k – 1

  • i := 0

  • count := 0

  • 当end <奇数_i的大小时,执行以下操作

    • 如果end与odd_i的大小-1相同,则
      • j := nums的大小 – 1
    • 否则,
      • 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

  • 返回count

例子

让我们看以下实现以更好地理解-

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教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程