【leetcode】1491. 去掉最低工资和最高工资后的工资平均值 C语言实现+思路分析

题目
给你一个整数数组 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;

你可能感兴趣的:(leetcode,Data_Structure,bug)