使用C++编写代码,找到具有相同最小值和最大值的子数组的数量
在本文中,我们将使用C++解决寻找最大值和最小值相同的子数组数量的问题。以下是该问题的示例−
Input : array = { 2, 3, 6, 6, 2, 4, 4, 4 } Output : 12 Explanation : {2}, {3}, {6}, {6}, {2}, {4}, {4}, {4}, {6,6}, {4,4}, {4,4} and { 4,4,4 } are the subarrays which can be formed with maximum and minimum element same. Input : array = { 3,3,1,5,1,2,2 } Output : 9 Explanation : {3}, {3}, {1}, {5}, {1}, {2}, {2}, {3,3} and {2,2} are the subarrays which can be formed with minimum and maximum are the same.
求解的方法
通过示例,我们可以说,使用等于数组大小的相同最小和最大元素可以形成最小数量的子数组。如果连续的数字相同,子数组的数量可以更多。
所以我们可以采用遍历每个元素,检查其连续的数字是否相同的方法,如果连续的数字则增加计数相同,如果发现不同的数字则中断内循环。
每次内循环结束或中断时,结果变量都会增加结果变量,最后显示结果变量的结果。
p>
示例
#include <bits/stdc++.h> using namespace std; int main(){ int a[ ] = { 2, 4, 5, 3, 3, 3 }; int n = sizeof(a) / sizeof(a[0]); int result = n, count =0; for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { if(a[i]==a[j]) count++; else break; } result+=count; count =0; } cout << "Number of subarrays having minimum and maximum elements same:" << result; return 0; }
输出
Number of subarrays having minimum and maximum elements same: 9 Time complexity = O(n<sup>2</sup>).
以上代码的解释
在这段代码中,我们使用变量n来存储数组的大小,result = n,因为最少可以形成n个子数组并计算相同数字的计数。
外部循环用于处理数组中的每个元素。内部循环用于查找索引元素之后有多少个连续相同的数字,并在内部循环结束时将计数变量与结果变量递增。最后显示存储在结果变量中的输出。
高效的方法
在这种方法中,我们遍历每个元素,并对于每个元素,我们搜索有多少个连续相同的数字。对于每个找到的相同数字,我们递增计数变量,并且当找到不同的数字时,通过使用公式"n = n*(n+1)/2"找到可以使用该公式形成多少个子数组,并将结果变量递增。
示例
#include <bits/stdc++.h> using namespace std; int main(){ int a[] = { 2, 4, 5, 3, 3, 3 }; int n = sizeof(a) / sizeof(a[0]); int result = 0; int count =1,temp=a[0]; for (int i = 1; i < n; i++) { if (temp==a[i]){ count++; } else{ temp=a[i]; result = result + (count*(count+1)/2); count=1; } } result = result + (count*(count+1)/2); cout << "Number of subarrays having minimum and maximum elements same:" << result; return 0; }
输出
Number of subarrays having minimum and maximum elements same: 9 Time complexity : O(n)
上述代码说明
在此代码中,我们将数组的第 0 个索引存储在 temp 变量中,并从索引 1 开始循环。我们检查 temp 变量是否等于该元素在当前索引处,对于找到的相同数字将计数加 1。如果 temp 变量不等于索引元素,则我们找到可以通过相同数字的计数得出的子数组的组合,并将结果存储在 result 变量中。我们将临时值更改为当前索引,将计数重置为 1。最后,我们显示存储在结果变量中的答案。
结论
在本文中,我们解决了一个问题查找最小和最大元素相同的子数组的数量。我们还学习了解决这个问题的C++程序以及解决这个问题的完整方法(正常且高效)。我们可以用其他语言比如C、java、python等语言来编写同样的程序。希望这篇文章对您有所帮助。
以上是使用C++编写代码,找到具有相同最小值和最大值的子数组的数量的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用math.Max函数获取一组数中的最大值在数学和编程中,经常需要找出一组数中的最大值。在Go语言中,我们可以使用math包中的Max函数来实现这个功能。本文将介绍如何使用math.Max函数来获取一组数中的最大值,并提供相应的代码示例。首先,我们需要导入math包。在Go语言中,导入包可以使用import关键字,如下所示:import"mat

分布外(OOD)检测对于开放世界智能系统的可靠运行至关重要,但目前面向对象的检测方法存在「评估不一致」(evaluationinconsistencies)的问题。之前的工作OpenOODv1统一了OOD检测的评估,但在可扩展性和可用性方面仍然存在限制。最近开发团队再次提出OpenOODv1.5,相比上一版本,新的OOD检测方法评估在确保准确、标准化和用户友好等方面得到显著提升。图片Paper:https://arxiv.org/abs/2306.09301OpenOODCodebase:htt

在准确率-召回率曲线上,同样的点是用不同的坐标轴绘制的。警告:左边的第一个红点(0%召回率,100%精度)对应于0条规则。左边的第二个点是第一个规则,等等。 Skope-rules使用树模型生成规则候选项。首先建立一些决策树,并将从根节点到内部节点或叶子节点的路径视为规则候选项。然后通过一些预定义的标准(如精确度和召回率)对这些候选规则进行过滤。只有那些精确度和召回率高于其阈值的才会被保留。最后,应用相似性过滤来选择具有足够多样性的规则。一般情况下,应用Skope-rules来学习每个根本原因的

我们都知道不是任何数字的平方的数字,如2、3、5、7、8等。非平方数有N个,不可能知道每个数字。因此,在本文中,我们将解释有关无平方数或非平方数的所有内容,以及在C++中查找第N个非平方数的方法。第N个非平方数如果一个数是整数的平方,则该数被称为完全平方数。完全平方数的一些例子是-1issquareof14issquareof29issquareof316issquareof425issquareof5如果一个数不是任何整数的平方,则该数被称为非平方数。例如,前15个非平方数是-2,3,5,6,

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

我们需要适当的知识才能在C++的数组语法中创建几个唯一的对。在查找唯一对的数量时,我们计算给定数组中的所有唯一对,即可以形成所有可能的对,其中每个对应该是唯一的。例如-Input:array[]={5,5,9}Output:4Explanation:Thenumberofalluniquepairsare(5,5),(5,9),(9,5)and(9,9).Input:array[]={5,4,3,2,2}Output:16寻找解决方案的方法有两种方法可以解决这个问题,它们是−

圆是封闭图形。圆上的所有点到圆内一点的距离都相等。中心点称为圆心。点到圆心的距离称为半径。面积是封闭图形尺寸跨度的定量表示。圆的面积是圆的尺寸内包围的面积。计算圆面积的公式,Area=π*r*r为了计算面积,我们给出了圆的半径作为输入,我们将使用公式来计算面积,算法STEP1:Takeradiusasinputfromtheuserusingstdinput.STEP2:Calculatetheareaofcircleusing, area=(

在Java中,在运行时传递参数的一种方法是使用命令行或终端。在检索命令行参数的这些值时,我们可能需要查找用户在运行时提供的参数数量,这可以借助length属性来实现。本文旨在借助示例程序解释传递和获取用户提供的参数数量的过程。获取用户在运行时提供的参数数量在查找命令行参数的数量之前,我们的第一步是创建一个允许用户在运行时传递参数的程序。字符串[]参数在编写Java程序时,我们经常遇到main()方法。当JVM调用此方法时,Java应用程序开始执行。它与一个名为String[]args的参数一起使
