【每日一题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

目录
相关文章
|
2月前
【每日一题Day168】LC2427公因子的数目 | 模拟
【每日一题Day168】LC2427公因子的数目 | 模拟
24 1
|
2月前
|
机器人
【每日一题Day270】LC874模拟行走机器人 | 哈希表+模拟
【每日一题Day270】LC874模拟行走机器人 | 哈希表+模拟
28 0
|
2月前
【数理统计实验(一)】统计量近似分布的随机模拟
【数理统计实验(一)】统计量近似分布的随机模拟
|
2月前
【每日一题Day133】LC2373矩阵中的局部最大值 | 模拟
【每日一题Day133】LC2373矩阵中的局部最大值 | 模拟
35 0
|
2月前
【每日一题Day353】LC2525根据规则将箱子分类 | 模拟
【每日一题Day353】LC2525根据规则将箱子分类 | 模拟
19 0
|
2月前
【每日一题Day153】LC2469温度转换 | 模拟
【每日一题Day153】LC2469温度转换 | 模拟
23 0
|
2月前
【每日一题Day277】LC2569更新数组后处理求和查询 | 线段树
【每日一题Day277】LC2569更新数组后处理求和查询 | 线段树
17 0
|
2月前
【每日一题Day165】LC1039多边形三角剖分的最低得分 | 区间dp
【每日一题Day165】LC1039多边形三角剖分的最低得分 | 区间dp
30 0
M*M贝叶斯统计问题的蒙特卡洛模拟的解决方法
M*M贝叶斯统计问题的蒙特卡洛模拟的解决方法
62 0
M*M贝叶斯统计问题的蒙特卡洛模拟的解决方法
|
机器学习/深度学习
【每日一题Day102】LC2315统计星号 | 模拟
思路:记录每个'|'的编号,统计第偶数个'|'之后、第奇数个'|'之前的星号,以及末尾剩余字符串的星号个数
68 0