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

news/2024/9/23 1:35:31/

大样本统计【LC1093】

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

计算以下统计数据:

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

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

简单模拟

  • 思路

    按照定义进行模拟,难点在于平均值的越界处理和中位数的求法

    • 平均值:为了避免越界,使用long类型存储所有值之和

    • 中位数(下标从1开始)

      • 如果总个数为奇数,那么中位数为第 ⌈ n u m 2 ⌉ \lceil \frac{num}{2} \rceil 2num个数
      • 如果总个数为偶数数,那么中位数为第$ \frac{num}{2} 个和第 个和第 个和第 \frac{num}{2} + 1$个数的平均值

      因此可以使用辅助函数寻找数组中的第 i i i个数

  • 实现

    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;}
    }
    
    • 复杂度
      • 时间复杂度: O ( n ) \mathcal{O}(n) O(n)
      • 空间复杂度: O ( 1 ) \mathcal{O}(1) O(1)

http://www.ppmy.cn/news/94001.html

相关文章

Canonical标签在SEO中重要作用

canonical标签是很多搜索引擎都支持的一个标签&#xff0c;它的作用是标记某一网页的唯一url地址。这样做的目的是保证我们的某一网页在搜索引擎中只有一个唯一的地址。 Canonical标签对于一些入行不久的人来说&#xff0c;可能会有些陌生。但这个标签是很多搜索引擎都支持的标…

任务19 简单个人电话号码查询系统

系列文章 任务19 简单个人电话号码查询系统 问题描述 人们在日常生活中经常需要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询。基本要求 (1) 在外存上,用文件保存电话号码信息; (2) 在内存中…

springboot+vue广场舞团系统(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的广场团舞系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

Linux 查看或统计网卡流量的几种方式么?

在工作中&#xff0c;我们经常需要查看服务器的实时网卡流量。通常&#xff0c;我们会通过这几种方式查看Linux服务器的实时网卡流量。 目录 1、sar 2、 /proc/net/dev 3、ifstat 4、iftop 5、nload 6、iptraf-ng 7、nethogs 8、扩展 1、sar sar命令包含在sysstat工具…

AI智慧安监视频平台EasyCVR视频出现不能播放的情况排查与解决

EasyCVR基于云边端协同&#xff0c;可支持海量视频的轻量化接入与汇聚管理。平台兼容性强、拓展度高&#xff0c;可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码、平台级联等功能。 有用户反…

Error: Flash Download failed - Target DLL has been cancelled

文章目录 背景参考 背景 在使用keilv5进行STM32开发时&#xff0c;配置用JLink进行文件烧录&#xff0c;出现如下错误&#xff1a; 查阅资料&#xff0c;是因为Keil未识别烧录工具&#xff0c;需要进行下面的操作&#xff1a; 1.打开工程配置窗口&#xff0c;点开Debug选项卡…

Spark学习笔记

1 spark简介 (1) spark是基于内存计算的分布式并行计算框架&#xff0c;如今已成为apache软件基金会最重要的三大分布式计算系统开源项目之一(Hadoop、Spark、Storm)。 (2) spark组件 (3) spark组件应用场景 Spark Streaming&#xff1a;提供流计算功能 Sparl SQL&#xff1…

x86游戏逆向之实战游戏线程发包与普通发包的逆向

网游找Call的过程中难免会遇到不方便通过数据来找的或者仅仅查找数据根本找不到的东西&#xff0c;但是网游中一般的工程肯定要发给服务器&#xff0c;比如你打怪&#xff0c;如果都是在本地处理的话就特别容易产生变态功能&#xff0c;而且不方便与其他玩家通信&#xff0c;所…