【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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值