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,则
将 i 插入到 odd_i 的末尾
start := 0, end := k - 1
i := 0
count := 0
当 end < odd_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
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP