1093. 大样本统计
# 1093. 大样本统计 (opens new window)
解题思路:模拟。
注意求平均数时可能会爆,用更长位数的数据类型进行保存。
class Solution {
public double[] sampleStats(int[] count) {
int min=-1,max=-1,temp=0,mode=-1;
doublenum=0,res=0;
for(int i=0;i<count.length;i++){
if(count[i]>0) {
if(min==-1){
min=i;
}
max=i;
double t=num;
num+=count[i];
res=res/num*t+count[i]/num*i;
if(count[i]>temp){
temp=count[i];
mode=i;
}
}
}
int half=(int)num/2,left=-1;
double median=-1;
temp=0;
for(int i=0;i<count.length;i++){
if(count[i]>0){
if(num%2==0){
if(temp+count[i]>=half&&left==-1) left=i;
if(temp+count[i]>=half+1){
int add=(i+left);
median=(double)add/2;
break;
}
}
if(num%2==1){
if(temp+count[i]>=half+1){
median=(double)i;
break;
}
}
temp+=count[i];
}
}
return new double[]{(double)min,(double)max,res,median,(double)mode};
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57