使用Python查找具有奇数和的子数组数量的程序
假设我们有一个数组arr。我们必须找到具有奇数和的子数组的数量。如果答案太大,则返回结果模10^9+7。
所以,如果输入像arr=[8,3,7],那么输出将是3,因为所有的子数组都是[[8],[3],[7],[8,3],[3,7],[8,3,7]]现在它们的和值为[8,3,7,11,10,18]所以有三个奇数和值[3,7,11]。
为了解决这个问题,我们将按照以下步骤操作-
freq:=包含两个元素1和0的列表
答案:=0
前缀:=0
对于arr中的每个x,执行
前缀:=前缀+x
ans:=ans+freq[1XOR前缀AND1]
频率[前缀与1]:=频率[前缀与1]+1
返回ansmod(10^9+7)
让我们看看以下实现以获得更好的理解-
示例
def solve(arr):
freq = [1, 0]
ans = prefix = 0
for x in arr:
prefix += x
ans += freq[1 ^ prefix&1]
freq[prefix &s; 1] += 1
return ans % (10**9+7)
arr = [8,3,7]
print(solve(arr))输入
[8,3,7]输出结果
3
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语