Input : arr[] = {5, 4, 4, 5, 1, 3}
Output : 12
These are possible subarrays with odd sum.
1) {5} Sum = 5 (At index 0)
2) {5, 4} Sum = 9
3) {5, 4, 4} Sum = 13
4) {5, 4, 4, 5, 1} Sum = 19
5) {4, 4, 5} Sum = 13
6) {4, 4, 5, 1, 3} Sum = 17
7) {4, 5} Sum = 9
8) {4, 5, 1, 3} Sum = 13
9) {5} Sum = 5 (At index 3)
10) {5, 1, 3} Sum = 9
11) {1} Sum = 1
12) {3} Sum = 3
但是如何在O(n)中解决这个问题呢?
下面是Java中的一个简单解决方案:
public class Odd {
static int[] arr = { 5, 4, 4, 5, 1, 3 };
public static void main(String... args) {
int odd = 0;
int even = 0;
int result = 0;
for (int i : arr) {
if (i % 2 == 0) {
even++;
} else {
int temp = even;
even = odd;
odd = temp + 1;
}
result += odd;
}
System.out.println(result);
}
}
以下是其背后的逻辑:
我们正在遍历数组的所有元素(这就是为什么它将是O(n))。我们有3个辅助变量。Result包含所有已计数子数组的数目。Odd ad even包含以当前位置结束的奇数/偶数子数组。
我最近遇到一个问题如下。
给定一个整数数组,我必须找到具有最大和的子数组,使得和是奇数。 但是我怎么把它扩展到和是奇数。 编辑 数组的所有元素都是整数和正数
如何添加代码以查找此程序数组中的零?此代码可以计算偶数和奇数。我应该做一个不同的语句,还是可以添加另一个如果其他语句?
该问题给出了两个输入:数组(arr)和由数组构成子数组的次数(n)。子数组的和应该是奇数 已经很清楚,如果所有的数字都是偶数。奇数和子数组是不可能的。对于奇数和,连续的2个数字应该是奇数+偶数或者偶数+奇数。但我似乎不能把它们分成N个子数组。请帮忙解释一下逻辑。
给定一个整数数组和一个整数m,我如何找到所有包含m个奇整数的子数组?如果我的问题不充分,下面是对整个问题的更长描述。这个问题有比n^2更快的解决方案吗?下面的解决方案似乎是n^2,我不确定如何进一步优化它。 https://github.com/cem3394/hr-haskell/blob/master/beautifulsubarrays.hs
问题内容: 我想计算所有奇数数组索引的总和,但是在寻找正确的方法时遇到了一些麻烦。 到目前为止,这是我的代码: 关于为何不起作用的任何想法,或者更简单的方法?为了澄清,我想在奇数数组索引位置添加所有数字,所以。 编辑: 忘记提及我只想添加1、3、5、7、9、11,而不是13。 问题答案: 刚刚编辑了代码: