【每日一题Day219】LC1093大样本统计 | 模拟

简介: 【每日一题Day219】LC1093大样本统计 | 模拟

大样本统计【LC1093】

我们对 0255 之间的整数进行采样,并将结果存储在数组 count 中:count[k] 就是整数 k 在样本中出现的次数。

计算以下统计数据:

  • minimum :样本中的最小元素。
  • maximum :样品中的最大元素。
  • mean :样本的平均值,计算为所有元素的总和除以元素总数。
  • median
  • 如果样本的元素个数是奇数,那么一旦样本排序后,中位数 median 就是中间的元素。
  • 如果样本中有偶数个元素,那么中位数median 就是样本排序后中间两个元素的平均值。
  • mode :样本中出现次数最多的数字。保众数是 唯一 的。

以浮点数数组的形式返回样本的统计信息 [minimum, maximum, mean, median, mode] 。与真实答案误差在 10-5 内的答案都可以通过。

简单模拟

  • 思路按照定义进行模拟,难点在于平均值的越界处理和中位数的求法
  • 平均值:为了避免越界,使用long类型存储所有值之和
  • 中位数(下标从1开始)

image.png

class Solution {
    int[] count;
    public double[] sampleStats(int[] count) {
        this.count = count;
        double[] res = new double[5];
        int n = count.length;
        int num = 0, maxCount = 0;
        long sum = 0;
        res[0] = 256;
        for (int i = 0; i < n; i++){
            num += count[i];
            sum += (long)i * count[i];
            if (count[i] != 0){              
                res[0] = Math.min(res[0], i);// 最小值
                res[1] = Math.max(res[1], i);// 最大值
            }
            if (count[maxCount] < count[i]){
                maxCount = i;// 众数
            }
        }
        res[2] = 1.0 * sum / num;// 平均值
        res[3] = num % 2 == 1 ? find(num / 2 + 1) : (find(num / 2) + find(num / 2 + 1)) / 2.0;// 中位数
        res[4] = maxCount;// 众数    
        return res;
    }
    public int find(int index){
        int i = -1, cnt = 0;
        while (cnt < index){
            cnt += count[++i];
        }
        return i;
    }
}

image.png

目录
相关文章
|
7月前
【每日一题Day168】LC2427公因子的数目 | 模拟
【每日一题Day168】LC2427公因子的数目 | 模拟
46 1
|
7月前
【每日一题Day133】LC2373矩阵中的局部最大值 | 模拟
【每日一题Day133】LC2373矩阵中的局部最大值 | 模拟
54 0
【数理统计实验(一)】统计量近似分布的随机模拟
【数理统计实验(一)】统计量近似分布的随机模拟
|
6月前
|
数据处理
大学物理-实验篇——测量误差与数据处理(测量分类、误差、有效数字、逐差法)
大学物理-实验篇——测量误差与数据处理(测量分类、误差、有效数字、逐差法)
246 11
|
7月前
【每日一题Day145】LC2383赢得比赛需要的最少训练时长 | 模拟
【每日一题Day145】LC2383赢得比赛需要的最少训练时长 | 模拟
52 0
|
7月前
|
资源调度 数据可视化 Python
Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数时间数据波动性可视化
Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数时间数据波动性可视化
|
7月前
|
数据可视化 索引 Python
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
|
7月前
【每日一题Day371】LC2586统计范围内的元音字符串数 | 模拟
【每日一题Day371】LC2586统计范围内的元音字符串数 | 模拟
60 1
|
7月前
【每日一题Day353】LC2525根据规则将箱子分类 | 模拟
【每日一题Day353】LC2525根据规则将箱子分类 | 模拟
35 0
|
7月前
【每日一题Day153】LC2469温度转换 | 模拟
【每日一题Day153】LC2469温度转换 | 模拟
50 0