在 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