使用C++编写代码,找到具有奇数和的子数组的数量

使用c++编写代码,找到具有奇数和的子数组的数量

子数组是数组的连续部分。例如,我们考虑一个数组 [5, 6, 7, 8],那么有十个非空子数组,如 (5), (6), (7), (8), (5, 6), (6 ,7)、(7,8)、(5,6,7)、(6,7,8) 和 (5,6,7,8)。

在本指南中,我们将解释在 C++ 中查找所有可能的信息来查找具有奇数和的子数组的数量。为了找到奇数和的子数组的数量,我们可以使用不同的方法,所以这里是一个简单的例子 –

Input : array = {9,8,7,6,5}Output : 9Explanation :Sum of subarray -{9} = 9{7} = 7{5} = 5{9,8} = 17{8,7} = 15{7,6} = 13{6,5} = 11{8,7,6} = 21{9,8,7,6,5} = 35

暴力方法

通过这种方法,我们可以简单地检查所有子数组中元素的总和是偶数还是奇数,如果是偶数,我们将拒绝该子数组并计算总和为奇数的子数组,这不是一种有效的方法,因为此代码的复杂度为 O(n2)。

示例

#include using namespace std;int main(){    int n=5, temp = 0;    int a[n-1] = { 9,8,7,6,5 } ; // declaring our array.    int cnt = 0; // counter variable.    for(int i = 0; i < n; i++){        temp = 0; // refreshing our temp sum.        for(int j = i; j < n; j++){ // this loop will make our subarrays starting from i till n-1.            temp = temp + a[j];            if( temp % 2 == 1 )                cnt++;        }    }    cout << "Number of subarrays with odd sum : " << cnt << "n";    return 0;}

输出

Number of subarrays with odd sum : 9

上述代码说明

此代码中使用了嵌套循环,其中外层循环用于递增 I 的值,I 指向数组从头开始的每个值;内循环用于查找从位置 ” i “ 开始的具有奇数和的子数组。

立即学习“C++免费学习笔记(深入)”;

高效方法

在这种方法中,我们正在处理每个从数组中第 0 个位置开始的元素。如果当前元素是奇数,则为每个偶数增加一个奇数计数器并增加一个偶数计数器。如果我们找到一个奇数,则交换 Even 和 odd 的值,因为向子数组添加奇数会改变其奇偶校验,最后向结果添加一个计数。这段代码的复杂度是 O(n),因为我们正在处理每个元素。

示例

 #include using namespace std;int main(){    int odd = 0, even = 0,  result = 0,n=5,i,temp;    int arr[ n-1 ] = { 9,8,7,6,5}; // initialising the array     // for loop for processing every element of array    for ( i = 0 ; i < n ; i ++ )  {        if ( arr[ i ] % 2 == 0 ) {            even++;        } else {          // swapping even odd values            temp = even;            even = odd;            odd = temp + 1;        }        result += odd;    }    cout << "Number of subarrays with odd sum : " << result;}

输出

Number of subarrays with odd sum : 9

上述代码的解释

在这段代码中,我们检查每个元素的偶数/奇数,并为偶数增加偶数计数器,为奇数增加奇数计数器。此外,如果找到奇数,我们将交换奇偶计数器值;否则,它将改变子数组的奇偶校验。然后在每次迭代后将奇数计数器的值添加到结果变量中。

结论

在本文中,我们解释了如何从 Brute 中查找总和为奇数的子数组的数量强制方法,生成每个子数组的总和为奇数并递增计数。这段代码的时间复杂度是O(n2)。一种有效的方法是遍历数组的每个元素,并用找到的每个奇数/偶数增加奇数/偶数计数器变量,如果找到奇数则交换计数器;这段代码的时间复杂度是O(n)。希望您发现本文有助于理解问题和解决方案。

以上就是使用C++编写代码,找到具有奇数和的子数组的数量的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:39:18
下一篇 2025年12月17日 22:39:24

相关推荐

  • 最长的子数组,其最大公约数大于1

    数组是一组相似的数据集合,以连续的方式存储在相邻的内存位置上。通过将偏移值定义为数据库的特定基值,可以更容易地评估每个元素的特定位置。该特定索引的基值为零,偏移值是两个特定索引之间的差值。子数组是特定数组的一部分,可以定义为一组变量,具有多个值的标签。最长的子数组指的是数组中所有元素都大于K的数组。…

    2025年12月17日
    000
  • 具有相同数量小写字母和大写字母的子字符串数量

    在这个问题中,我们需要计算给定字符串中包含相同数量的小写和大写字符的字符串的总数。解决这个问题的朴素方法是找到所有的子字符串,并计算具有相同数量的小写和大写字符的子字符串的总数。 有效的方法是使用子数组求和问题。我们可以将小写字符视为-1,将大写字符视为+1,我们将学习这两种方法来解决问题。 问题陈…

    2025年12月17日
    000
  • 查询以更新的矩阵中连接的非空单元格的数量

    矩阵可以被认为是按行和列组织的单元格的集合。每个单元格可以包含一个值,该值可以为空或非空。在计算机编程中,矩阵通常用于表示二维网格中的数据。 在本文中,我们将讨论如何有效地计算矩阵中连接的非空单元格的数量,同时考虑到矩阵可能的更新。我们将探索解决此问题的不同方法,并提供真实的代码示例来演示实现。 语…

    2025年12月17日
    000
  • 使用C++编写,找到和小于K的子数组的数量

    在这篇文章中,我们将使用C++找出具有小于K的和的子数组的数量。在这个问题中,我们有一个数组arr[]和一个整数K。现在我们需要找出和小于K的子数组。以下是示例 − Input : arr[] = {1, 11, 2, 3, 15}K = 10Output : 4{1}, {2}, {3} and …

    2025年12月17日
    000
  • C++程序计算1到N之间所有奇数的和

    在我们学习编程和逻辑构建时,获取级数和是最简单的练习任务之一。在数学中,有一些方法可以找到不同级数中存在的级数之和。在编程中,我们通过实现逻辑将它们一一生成,并重复将它们相加以获得总和,否则根据需要执行任何其他操作。在本文中,我们将介绍使用 C++ 获取 N 以内所有奇数之和的技术。 有两种可能的方…

    2025年12月17日
    000
  • 一个数组可以重复分割成具有相等和的子数组的次数

    在C++中,我们有一个vector头文件,可以在运行时更改数组的大小。在本文中,我们将学习数组可以重复分割成具有相等和的子数组的次数的概念。 Let’s take an example to show an array partition with an equal sum. 给定的数组是{1,2,…

    2025年12月17日
    000
  • 使用C++找到遍历N叉树的方式的数量

    给定一个n叉树,我们的任务是找到遍历这棵树的总方式数,例如 − 对于上面的树,我们的输出将是192。 对于这个问题,我们需要一些组合学的知识。现在在这个问题中,我们只需要检查每条路径的所有可能组合,这将给我们答案。 找到解决方案的方法 在这个方法中,我们只需要执行一次层次遍历,检查每个节点有多少个子…

    2025年12月17日
    000
  • 使用C++编写一个程序来找到具有给定范围内和的子数组的数量

    在本文中,我们将使用 C++ 程序求解总和在给定范围内的子数组的数量。我们有一个正整数数组 arr[] 和一个范围 {L, R},我们必须计算总和在给定范围 L 到 R 内的子数组的总数。所以这是该问题的简单示例 – Input : arr[] = {1, 4, 6}, L = 3, R…

    2025年12月17日
    000
  • 使用C++编写,找到子数组中的质数数量

    在本文中,我们将描述查找子数组中素数数量的方法。我们有一个正数数组 arr[] 和 q 个查询,其中有两个整数表示我们的范围 {l, R},我们需要找到给定范围内的素数数量。下面是给定问题的示例 – Input : arr[] = {1, 2, 3, 4, 5, 6}, q = 1, L…

    2025年12月17日
    000
  • 使用C++编写代码,找到具有K个逆序对的排列数量

    在数组中,如果 a[i] > a[j] 且 i 排列以完美的 K 反转结束。这是例子 – Input: N = 4, K = 1Output: 3Explanation: Permutation of the first N numbers in total : 1234, 124…

    2025年12月17日
    000
  • 最多可以购买的糖果数量

    我们得到了一个糖果[]数组,长度存储在“size”中。每个元素 candies[i] 都有一个 i 类型糖果的编号。目标是用任意金额购买尽可能多的糖果。条件如下 – 如果您购买类型 i 的 X[i] (0 X(j) X(j)=0,没有购买j类型的糖果 我们通过例子来理解。 输入 &#82…

    2025年12月17日
    000
  • 满二叉树的数量,其中每个节点都是其子节点的乘积

    满二叉树是一种特殊类型的二叉树,其中所有父节点要么有两个子节点,要么没有子节点。在数据结构中,这些类型的树被认为是平衡且有组织的表示。完整二叉树可能具有独特的特征,其中每个父节点都是其子节点的产物。 在本文中,我们将讨论使用 C++ 计算完整二叉树数量的不同方法,以便每个节点都是其子节点的乘积。 输…

    2025年12月17日
    000
  • OpenOOD更新v1.5:全面、精确的分布外检测代码库及测试平台,支持在线排行榜、一键测试

    分布外(OOD)检测对于开放世界智能系统的可靠运行至关重要,但目前面向对象的检测方法存在「评估不一致」(evaluation inconsistencies)的问题。 之前的工作OpenOOD v1统一了OOD检测的评估,但在可扩展性和可用性方面仍然存在限制。 最近开发团队再次提出OpenOOD v…

    2025年12月1日 科技
    000
  • Linux命令:查看telnet进程数量的方法

    Linux命令是系统管理员日常工作中必不可少的工具之一,它们可以帮助我们完成各种系统管理任务。在运维工作中,有时候需要查看系统中某个进程的数量以便及时发现问题和进行调优。本文将介绍如何使用Linux命令查看telnet进程的数量,让我们一起来学习吧。 在Linux系统中,我们可以使用ps命令结合gr…

    2025年11月19日
    100
  • 余承东:鸿蒙 5 终端数量突破 2000 万 近一千万仅用 2 个月

    9 月 29 日,华为常务董事、终端 bg 董事长余承东在社交平台透露,鸿蒙 os 5 的用户规模已突破 2000 万台。他还特别提到,从 1000 万到 2000 万用户的跨越,仅仅用了两个月时间。 鸿蒙 OS 5 回顾发展历程,鸿蒙 OS 5 于 2024 年 10 月正式上线,历经 10 个月…

    2025年11月3日
    000

发表回复

登录后才能评论
关注微信