题目
给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。
请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。
与真实值误差在 10^-5 以内的结果都将视为正确答案。
思路:
模拟
1.先找到最大最小工资
2.再算平均值
代码:
double average(int* salary, int salarySize)
{
int max=0;
int min=1000001;
int MAX;
int MIN;
double num = salarySize-2;
double sum=0;
for(int i=0;i<salarySize;i++)
{
sum+=salary[i];
if(salary[i]>max)
{
max = salary[i];
MAX = i;
}
if(salary[i]<min)
{
min = salary[i];
MIN = i;
}
}
sum = sum - salary[MAX]-salary[MIN];
double aver = sum/(num);
return aver;
}
思考:
此题思路非常容易,但是还是要注意坑!!!
题目要求 与真实值误差在 10^-5 以内的结果都将视为正确答案。
所以,我们需要注意各个变量的精度问题!
注意到,最后返回的平均工资是double
而返回值又是通过double aver = sum/(num);
得到的,所以要求分子分母均为double
类型。
故我们需要将num,sum变量的精度设置好!
double num = salarySize-2;
double sum=0;