使用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
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练