首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何找到数组中非零值的最大集合的平均值?

要找到数组中非零值的最大集合的平均值,可以按照以下步骤进行:

  1. 遍历数组,将非零值存储到一个新的数组中。
  2. 对新数组进行排序,以便找到最大集合。
  3. 计算最大集合的元素个数,并将集合中的所有元素相加得到总和。
  4. 将总和除以最大集合的元素个数,得到平均值。

以下是一个示例的JavaScript代码实现:

代码语言:javascript
复制
function findMaxNonZeroAverage(arr) {
  let nonZeroArr = arr.filter(num => num !== 0); // 过滤出非零值
  nonZeroArr.sort((a, b) => b - a); // 降序排序

  let maxSet = [];
  let maxSetSize = 0;
  let currentSet = [];
  let currentSetSize = 0;

  for (let i = 0; i < nonZeroArr.length; i++) {
    if (currentSetSize === 0 || nonZeroArr[i] === currentSet[currentSetSize - 1] - 1) {
      currentSet.push(nonZeroArr[i]);
      currentSetSize++;
    } else {
      if (currentSetSize > maxSetSize) {
        maxSet = currentSet;
        maxSetSize = currentSetSize;
      }
      currentSet = [nonZeroArr[i]];
      currentSetSize = 1;
    }
  }

  if (currentSetSize > maxSetSize) {
    maxSet = currentSet;
    maxSetSize = currentSetSize;
  }

  let sum = maxSet.reduce((acc, num) => acc + num, 0);
  let average = sum / maxSetSize;

  return average;
}

// 示例用法
let arr = [1, 2, 0, 4, 5, 0, 7, 8, 9, 0, 11, 12];
let average = findMaxNonZeroAverage(arr);
console.log(average);

该代码会输出最大集合的平均值。请注意,这只是一个示例实现,实际应用中可能需要根据具体情况进行调整和优化。

关于云计算、IT互联网领域的名词词汇,可以参考相关文档和资料进行学习和了解。腾讯云提供了丰富的云计算产品和服务,可以根据具体需求选择适合的产品。具体的产品介绍和相关链接地址可以在腾讯云官方网站上找到。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Leetcode -643.子数组最大平均值Ⅰ -645.错误集合

Leetcode -643.子数组最大平均值Ⅰ 题目:给你一个由 n 个元素组成整数数组 nums 和一个整数 k 。 请你找出平均数最大且长度为 k 连续子数组,并输出该最大平均数。...sum 与 maxsum 较大,maxsum取较大 for (int i = k; i < numsSize; i++) { sum = sum -...题目:集合 s 包含从 1 到 n 整数。...不幸是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字,导致集合丢失了一个数字并且有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后结果。...请你找出重复出现整数,再找到丢失整数,将它们以数组形式返回。

9410

分割数组最大

问题描述: 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空连续子数组。设计一个算法使得这 m 个子数组各自和最大最小。...解决方案 贪心+二分 该问题是一道经典贪心+二分问题。 不妨设k为子数组最大和,由题意可知存在如下结论: 若以子数组最大为k可以分割出m个子数组,则以k+ 1也一定能分割出m个子数组。...由该结论我们就可以对k从[max(nums), sum(nums)]区间中二分查找出满足条件k最小。上式中下界max(nums)为当前数组最大,sum(nums)为当前数组之和。...对于如何判断给定k能否分割出m个子数组,我们可以采用贪心策略进行分割:从数组第一个元素开始将数组分割为一段一段,使得每一段长度恰好不大于给定k(即如果再来一个元素的话会现大于k现象)。...dp[i - 1] [k - 1]为前段最大数组和,max(…)是为了获得最大数组和,外面的min(…)是为选出所有分割子数组最大最小那个。

4.3K10

leetcode - 分割数组最大

题目描述 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空连续子数组。设计一个算法使得这 m 个子数组各自和最大最小。...其中最好方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自最大为18,在所有情况中最小。...题解 第一点,被分成m个子数组最大必在nums最大和nums元素之和之中。...第二点,弱弱地猜猜看,拿所在区间范围中间去套,看看其能够得到多少个子区间数,如果说所得到子区间数偏大于m,说明你划分太小了,令左区间等于中间加1,反之相反。.../interview/split_array.js 项目地址: https://zhengjiangtao.cn/coding/interview/split_array.js 参考文献 410.分割数组最大

1.4K20

滑动窗口之【和最大】&【最大集合

这是我参与11月更文挑战第3天,活动详情查看:2021最后一次更文挑战 图片 本篇带来两道经典关于滑动窗口算法题,有兴趣可在控制台跑一跑~ 求和最大 题目来源:上一篇掘文《温故知新 ——...return maxVal }; const nums= [ 5, 7, 1, 4, 3, 6, 2, 9, 2 ] const k=5 maxSlidingWindow(nums,k) // 24 求最大集合...你只可以看到在滑动窗口内 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中最大。...写一个函数来判断数组最大数; 初始化窗口,求最大保存; 滑动窗口,再求最大保存; 滑动直至完毕; 本瓜题解: /** * @param {number[]} nums * @param {number...用 Math.max() 来每次从窗口找最大,时间复杂度是 O(n * k),仍然很大; 窗口固定,求最大集合 在根本上是 单调队列 问题!

40020

分割数组最大

这道题看着好像没什么思路,但其实可以利用二分法来做,二分法中mid就是最终要返回,也就代表着子数组和最小  我们首先还是设置左右区间,左区间L=0,右区间是数组所有元素和再加1,...因为二分法区间一般是左闭右开  然后就是将数组进行打包,从第一个开始打包,如果第一个加上后一个还不大于mid,那就将其继续加上后一个,直到大于mid了,那就说明这个包已经放不下了,后面的至少还需要再开一个包...,每开一个包,m数量就减少一个,最后return m究竟是否大于0  如果返回是true,那我们再试试mid更小时候是否也成立,将R = mid,把mid赋给R;如果返回是false,说明...mid太小了,那我们应该把mid稍微放大一点,看看还行不行,将L = mid + 1,把mid+1赋给L。...最终mid就是所求

71730

数组实际操作求数组中数字最大

DOCTYPE html>          一维数组最大              //一维数组初始         var num=[1,56,23,954,6,43,87,3,5,55];         function max(arr...){             var temp=arr[0];//初始化最大默认为数组第0号元素             //遍历出数组全部元素         for(var i=0;i<arr.length...;i++){             //用初始化和遍历出比较大于初始化,则将遍历后即为最大             if(arr[i]>temp){                 temp...=arr[i];             }         }         return temp;//将比较最大返回给temp         }                  var re

1.8K30

漫画:如何数组找到和为 “特定两个数?

我们来举个例子,给定下面这样一个整型数组(题目假定数组不存在重复元素): 我们随意选择一个特定,比如13,要求找出两数之和等于13全部组合。...由于12+1 = 13,6+7 = 13,所以最终输出结果(输出是下标)如下: 【1, 6】 【2, 7】 小灰想表达思路,是直接遍历整个数组,每遍历到一个元素,就和其他元素相加,看看和是不是等于那个特定...第1轮,用元素5和其他元素相加: 没有找到符合要求两个元素。 第2轮,用元素12和其他元素相加: 发现12和1相加结果是13,符合要求。 按照这个思路,一直遍历完整个数组。...在哈希表中查找7,查到了元素7下标是7,所以元素6(下标是2)和元素7(下标是7)是一对结果: 按照这个思路,一直遍历完整个数组即可。...= i) { resultList.add(Arrays.asList(i,map.get(other))); //为防止找到重复元素对

3K64

C语言丨如何查找数组最大或者最小?图文详解

程序中,我们经常使用数组(列表)存储给定线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中最大或者最小呢?...直到遍历完整个数组,max 记录就是数组最大,min 记录就是数组最小。...由于每个分组内元素最多有 2 个,很容易就可以找出其中最大或最小),然后这些最再进行两两比较,最终找到就是整个数组。...上图所示,借助“分而治之”思想,我们将“找 {3, 7, 2, 1} 中最问题转换成了:先找出 {3 , 7]、[2 , 1} 中各自,找出再进行两两比较,最终就可以找到整个数组..., right); //比较左、右两侧最大找到 [left,right] 整个区域最大 if (max_left >= max_right) { return

5.4K30

java如何打印数组,Java打印数组元素

大家好,又见面了,我是你们朋友全栈君。 本篇文章帮大家学习java打印数组元素,包含了Java打印数组元素使用方法、操作技巧、实例演示和注意事项,有一定学习价值,大家可以用来参考。...以下实例演示了如何通过重载 MainClass 类 printArray 方法输出不同类型(整型, 双精度及字符型)数组:public class MainClass { public static...5.5, 6.6, 7.7 }; Character[] characterArray = { ‘H’, ‘E’, ‘L’, ‘L’, ‘O’ }; System.out.println(“输出整型数组...(“\n输出字符型数组:”); printArray(characterArray); } } 以上代码运行输出结果为: 输出整型数组: 1 2 3 4 5 6 输出双精度型数组: 1.1 2.2 3.3...4.4 5.5 6.6 7.7 输出字符型数组: H E L L O 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131413.html原文链接:https:/

4.3K10

Javascript获取数组最大和最小方法汇总

比较数组中数值大小是比较常见操作,下面同本文给大家分享四种放哪广发获取数组最大和最小,对此感兴趣朋友一起学习吧 比较数组中数值大小是比较常见操作,比较大小方法有多种,比如可以使用自带...this.length; for (var i = 1; i < len; i++){ if (this[i] < min){ min = this[i]; } } return min; } //最大...apply能让一个方法指定调用对象与传入参数,并且传入参数是以数组形式组织。...(",");//转化为一维数组 alert(Math.max.apply(null,ta));//最大 alert(Math.min.apply(null,ta));//最小 以上内容是小编给大家分享...Javascript获取数组最大和最小方法汇总,希望大家喜欢。

6.1K50

查找二维数组最大及其位置

查找二维数组最大及其位置-Java实现 例: 封装一类 MatrixLocation,查询二维数组最大及其位置。...最大用 double 类型maxValue 存储,位置用 int 类型 row 和 column 存储。封装执行主类,给定二维数组,输出最大及其位置。封装执行主类。...这道题目就是一道简单二维数组查找问题,遍历二维数组即可找到最大。...方法不能其实有一些问题,它只能输出最大数组中第一次出现位置,这是由于题目已经规定好了最大下标用int row、int column表示。...如果自己写的话,可以用另外两个数组分别保存最大行下标与列下标,实现将最大数组中所有出现位置都输出。

2.2K20
领券