class Solution:
def sampleStats(self, count: List[int]) -> List[float]:
# 最小值标记
minimum_flag=0
# 求和
total=0
# 次数求和
count_len=0
# 众数标记
mode_count=0
# count前缀和
pre=[]
for n,number_count in enumerate(count):
number=n
if pre:
pre.append(number_count+pre[-1])
else:
pre.append(number_count)
# number不存在,快速跳过
if number_count==0:
continue
# number存在
else:
# 最小值
if minimum_flag==0:
minimum=number
minimum_flag=1
# 最大值
maximum=number
# 求和
total+=number*number_count
count_len+=number_count
# 众数
if number_count>mode_count:
mode_count=number_count
mode=number
# 平均值
mean=total/count_len
# 中位数
if count_len%2==1:
median_count=int((count_len-1)/2)+1
for n,i in enumerate(pre):
number=n
if median_count<=i:
median=number
break
else:
continue
else:
median_count_1=int(count_len/2)
median_count_2=int(count_len/2)+1
median_1=None
median_2=None
for n,i in enumerate(pre):
number=n
if median_count_1<=i:
if not median_1:
median_1=number
if median_count_2<=i:
if not median_2:
median_2=number
if median_1!=None and median_2!=None:
break
median=(median_1+median_2)/2
return [minimum,maximum,mean,median,mode]