当前位置: 首页 > 知识库问答 >
问题:

用握手引理求偶数和子数组的个数

燕正德
2023-03-14

我明白我们建立了奇偶和子数组的计数,但不明白为什么我们使用手抖引理来计算偶数和子数组的个数。如果我们得到一个偶数和奇数累积和的计数,握手引理是如何准确地发挥作用的呢?显然,偶数和子数组是由奇数+奇数,偶数+偶数,或者一个孤立的偶数值组成的,所以我只想知道在这个特定的场景中,所有的情况都是如何被解释的。谢谢你的帮助!

共有1个答案

阳勇
2023-03-14

首先,我们有一个数组,例如:

[1,3,5,2,10,7]

那么,如何用偶数和计算子数组的个数呢?让我们将其转换为另一个数组sum,该数组在索引ith处的值是从0到ith索引的子数组的和

[1,4,9,11,21,28]

显然,我们可以看到,对于从a到b范围的子数组,该子数组的和是偶数当且仅当sum[b]-sum[a-1]是偶数。

每个偶数顶点的度为偶数顶点个数-1

=>所以

2*E = odd*(odd - 1) + even*(even - 1) => E = odd*(odd - 1)/ 2 + even*(even - 1)/2

另一种理解方法是对于odd条目,选择odd-odd对的方法是C(odd,2)=odd*(odd-1)/2,C是组合

 类似资料:
  • 我想求两个整数之间的偶数奇偶数的个数。以下是我目前所写的内容: 这个很管用。但是,和这两个整数之间的差值可能高达,这意味着类似这样的解决方案是行不通的。是否有一个更有效的,即解决方案来解决这个问题?

  • 此请求不使用2D数组。考虑以下结构的1D数组,其中索引从零开始,长度从一开始: 节0是单个单元格的数组。 第1节 null null null null 到目前为止,我使用一个语句的公式只能获得第一节(不是第2节或第3节)。希望找到一组公式来实现目标,而不使用语句或循环。以下是我目前掌握的信息:

  • 给定一个大小为n, n的数组

  • O(n^2)算法简单。有没有人对此有更好的算法?

  • 问题内容: 我有这个数组: 我想根据索引是偶数还是奇数将其分为两个数组,如下所示: 提前致谢! 问题答案: 一种解决方案,使用匿名函数和: 这样就可以将数组中的项一次分离出来,但是有点“聪明”。确实没有比经典的,更冗长的更好

  • 对于使用分治方法的最大和子数组算法,我需要返回和和子数组。 我能在所有的测试中正确地计算和。然而,我无法计算出正确的子数组。 我的总数(正确):34 阵列:2 9 8 6 5-11 9-11 7 5-1-8-3 7-2 正确子数组:2 9 8 6 5 我的总数(正确):50 阵列:31-41 59 26-53 58 97-93-23 84 正确子数组:59 26-53 58 97 我的总数(正确)