目录
语法
源代码的算法
方法 1:暴力破解
算法
示例 2
输出
方法二:优化方法
结论
首页 后端开发 C++ 计算长度为K的子数组,其平均值超过给定数组的中位数

计算长度为K的子数组,其平均值超过给定数组的中位数

Sep 02, 2023 am 08:09 AM
平均值 中位数 子数组长度

计算长度为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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

平均值word公式是什么 平均值word公式是什么 Sep 19, 2023 pm 01:48 PM

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

自然数的平方平均值? 自然数的平方平均值? Sep 20, 2023 pm 10:29 PM

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

php数组求平均值的函数有哪些 php数组求平均值的函数有哪些 Jul 17, 2023 pm 04:03 PM

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

给定一个奇数,求所有奇数的平均值 给定一个奇数,求所有奇数的平均值 Sep 03, 2023 pm 03:49 PM

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

php怎么求一个一维数组的平均值 php怎么求一个一维数组的平均值 Dec 26, 2022 am 10:20 AM

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

给定的偶数之前的所有偶数的平均值是多少? 给定的偶数之前的所有偶数的平均值是多少? Aug 25, 2023 pm 11:53 PM

为了找到给定偶数之前的偶数的平均值,我们将把给定数字之前的所有偶数相加,然后计算偶数的数量。然后将总和除以偶数的个数。示例直到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函数计算某个字段的平均值 Jul 12, 2023 pm 03:28 PM

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

计算长度为K的子数组,其平均值超过给定数组的中位数 计算长度为K的子数组,其平均值超过给定数组的中位数 Sep 02, 2023 am 08:09 AM

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

See all articles