计算长度为K的子数组,其平均值超过给定数组的中位数
表达式“K 长度子数组”适用于具有恰好 K 个元素的连续子数组。掌握和使用子数组对于解决动态规划、计算几何和数据分析等领域的各种问题至关重要。
数组操作和统计中的另一个重要概念是中位数。数组的中位数表示元素按升序排序时位于中间的值。在元素个数为偶数的情况下,中位数是两个中心值的平均值。中位数构成了集中趋势的持久衡量标准,因为与平均值相比,它更不容易受到极端值或异常值的影响。
本文试图研究确定一个给定数组中平均值超过中位数的K长度子数组数量的挑战。通过理解数据集的平均值和中位数之间的关系,我们可以深入探讨这个挑战,并开发出解决它的高效技术。加入我们,我们将剖析问题陈述,检查关键概念,并通过算法高效计算数组中所需的K长度子数组的数量。
语法
按升序对数组中的元素进行排序。
sort(begin(array), end(array))
声明一个整数向量。
vector<int> vec </int>
声明一个整数数组
int arr[]
C++ 中的基本 for 循环语法。
for(int i=0; i<size; ++i)
源代码的算法
读取输入数组及其大小。
计算给定数组的中位数。
对于每个长度为K的子数组,计算平均值。
将平均值与中位数进行比较。
统计平均值超过中位数的子数组。
方法 1:暴力破解
方法 1 构成了一个简单的解决方案,用于解决确定平均值超过指定数组中位数的 K 长度子数组的数量的挑战。最初,对输入数组进行排序并计算中位数。随后,程序遍历所有可行的 K 长度子数组,并通过聚合它们的分量来计算它们的平均值。如果子数组的平均值超过中位数,则计数会增加。最后,代码返回此类子数组的数量。
算法
计算给定数组的中位数。
迭代所有可能的 K 长度子数组。
计算每个子数组的平均值。
如果子数组的平均值大于中位数,则增加计数。
示例 1
下面的代码遵循本文前面提到的强力方法。它首先对输入数组进行排序并计算中位数。然后,它迭代所有可能的 K 长度子数组,并通过对它们的元素求和来计算它们的平均值。如果子数组的平均值大于中位数,则计数会递增。最后,代码返回此类子数组的计数。
#include <iostream> #include <algorithm> #include <vector> using namespace std; int countSubarrays(vector<int> &arr, int n, int k) { int count = 0; double median; sort(arr.begin(), arr.end()); median = (n % 2 == 0) ? (arr[n/2 - 1] + arr[n/2]) / 2.0 : arr[n/2]; for (int i = 0; i <= n - k; i++) { double sum = 0; for (int j = i; j < i + k; j++) { sum += arr[j]; } if (sum / k > median) { count++; } } return count; } int main() { vector<int> arr = {1, 5, 6, 7, 9}; int n = arr.size(); int k = 3; int result = countSubarrays(arr, n, k); cout << "Number of K-length subarrays with average exceeding median: " << result << endl; return 0; }
输出
Number of K-length subarrays with average exceeding median: 1
方法二:优化方法
方法2是对确定具有平均值超过指定数组中位数的K长度子数组数量的问题的一种精细解决方案。它首先对输入数组进行排序并计算中位数。然后,它计算前缀和数组,用于确定每个K长度子数组的和。算法遍历所有可能的K长度子数组,使用前缀和数组计算它们的平均值,并与中位数进行比较。
如果子数组的平均值超过中位数,计数就会增加。最终,程序返回此类子数组的数量。这种方法比第一种方法更有效,因为它利用前缀和数组来计算每个 K 长度子数组的和,从而降低了运行时间的复杂性。
算法
计算给定数组的中位数。
计算前缀和数组。
迭代所有可能的 K 长度子数组。
使用前缀和数组计算平均值。
如果子数组的平均值大于中位数,则增加计数。
示例 2
该算法遵循前面描述的最佳方法。它利用前缀和数组快速计算每个 K 长度子集的聚合。对输入序列进行排序并确定中值后,计算前缀和。然后,程序遍历所有 K 长度的子集,使用前缀和数组计算它们的平均值,并将其与中值进行比较。如果平均值超过中位数,则计数会增加。总之,代码返回此类子集的数量。
#include <iostream> #include <algorithm> #include <vector> using namespace std; int countSubarrays(vector<int> &arr, int n, int k) { int count = 0; double median; sort(arr.begin(), arr.end()); median = (n % 2 == 0) ? (arr[n/2 - 1] + arr[n/2]) / 2.0 : arr[n/2]; vector<int> prefix_sum(n); prefix_sum[0] = arr[0]; for (int i = 1; i < n; i++) { prefix_sum[i] = prefix_sum[i - 1] + arr[i]; } for (int i = 0; i <= n - k; i++) { double sum = (i == 0) ? prefix_sum[i + k - 1] : prefix_sum[i + k - 1] - prefix_sum[i - 1]; if (sum / k > median) { count++; } } return count; } int main() { vector<int> arr = {1, 5, 6, 7, 9}; int n = arr.size(); int k = 3; int result = countSubarrays(arr, n, k); cout << "Number of K-length subarrays with average exceeding median: " << result << endl; return 0; }
输出
Number of K-length subarrays with average exceeding median: 1
结论
在本文中,我们讨论了两种使用 C++ 计算平均值超过给定数组中位数的 K 长度子数组的方法。第一种方法是强力方法,它迭代所有可能的 K 长度子数组并计算它们的平均值。第二种方法是一种优化方法,它使用前缀和数组来更有效地计算平均值。两个代码都已提供,可以执行以查找所需的子数组数量。
以上是计算长度为K的子数组,其平均值超过给定数组的中位数的详细内容。更多信息请关注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)

热门话题

平均值word公式是“=AVERAGE(ABOVE)”。具体计算平均值步骤:1、打开Word,并创建一个新的文档;2、在文档中,输入你要计算平均值的数据,每个数据占一行或一列。例如,可以在第一列输入数据;3、在数据的下方或右侧的一个空白单元格中,打开公式栏,并输入公式“=AVERAGE(ABOVE)”;4、按下Enter键,Word将计算并显示平均值。

自然数平方的平均值是通过将n个自然数的所有平方相加,然后除以该数字来计算的。示例前2个自然数为2.5,12+22=5=>5/2=2.5。编程中有两种计算方法-使用循环使用公式使用循环计算自然数平方的平均值此逻辑通过查找所有自然数的平方来工作。通过从1到n循环找到每个的平方并添加到sum变量。然后将该总和除以n。计算自然数平方和的程序-示例代码 实时演示#include<stdio.h>intmain(){ intn=2;

php数组求平均值的函数有:1、array_sum(),用于计算数组中所有值的总和,为了计算平均值,可以将数组中的所有值相加,然后除以数组元素的个数;2、array_reduce(),用于迭代数组并将每个值与一个初始值进行计算;3、array_mean(),用于返回数组的平均值,先计算数组的总和,并计算数组元素的个数,将总和除以数组元素的个数,即得到平均值。

奇数的平均数直到给定的奇数是一个简单的概念。您只需要找到直到该数字的奇数,然后将它们相加并除以该数字。如果要找到直到n的奇数的平均数。然后我们将从1到n找到奇数,然后相加,再除以奇数的数量。例子奇数的平均数直到9是5,即1+3+5+7+9=25=>25/5=5计算奇数的平均数直到n有两种方法,其中n是一个奇数使用循环使用公式程序查找到n为止的奇数的平均值,使用循环为了计算直到n的奇数的平均值,我们将把直到n的所有数字相加,然后除以直到n的奇数的个数。计算平均值的程序奇自然数直到n-示例代码

php求一个一维数组的平均值的方法:1、新建一个php文件;2、创建一个数组;3、使用array_sum函数对数组内的元素求和;4、使用count函数计算数组元素的个数,然后将两个数进行相除即可求出平均值。

为了找到给定偶数之前的偶数的平均值,我们将把给定数字之前的所有偶数相加,然后计算偶数的数量。然后将总和除以偶数的个数。示例直到10为止偶数的平均值为6,即2+4+6+8+10=30=>30/5=6有两种方法计算直到n的偶数的平均值,即偶数。使用循环使用公式计算直到n为止偶数的平均值的程序使用循环为了计算直到n的偶数的平均值,我们将把直到n的所有偶数相加,然后除以直到n的偶数的个数。计算程序直到n为止的偶自然数的平均值-示例代码 实时演示#include<stdio.h>intm

如何使用MySQL中的AVG函数计算某个字段的平均值在数据库管理系统中,处理数据是非常常见的任务。计算某个字段的平均值是其中一个常见的需求。MySQL提供了AVG函数,它可以帮助我们轻松地计算平均值。本文将介绍如何使用MySQL中的AVG函数,以及相关代码示例。首先,我们需要确保已经安装并配置了MySQL数据库。如果还没有安装,可以从MySQL官方网站下载并

表达式“K长度子数组”适用于具有恰好K个元素的连续子数组。掌握和使用子数组对于解决动态规划、计算几何和数据分析等领域的各种问题至关重要。数组操作和统计中的另一个重要概念是中位数。数组的中位数表示元素按升序排序时位于中间的值。在元素个数为偶数的情况下,中位数是两个中心值的平均值。中位数构成了集中趋势的持久衡量标准,因为与平均值相比,它更不容易受到极端值或异常值的影响。本文试图研究确定一个给定数组中平均值超过中位数的K长度子数组数量的挑战。通过理解数据集的平均值和中位数之间的关系,我们可以深入探讨这
