本文主要是介绍1491.去掉最低工资和最高工资后的工资平均值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
刷算法题:
第一遍:1.看5分钟,没思路看题解
2.通过题解改进自己的解法,并且要写每行的注释以及自己的思路。
3.思考自己做到了题解的哪一步,下次怎么才能做对(总结方法)
4.整理到自己的自媒体平台。
5.再刷重复的类似的题目,根据时间和任务安排刷哪几个板块
6.用c++语言 都刷过一遍了 就刷中等
一.题目
给你一个整数数组 salary
,数组里每个数都是 唯一 的,其中 salary[i]
是第 i
个员工的工资。
请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。
示例 1:
输入:salary = [4000,3000,1000,2000] 输出:2500.00000 解释:最低工资和最高工资分别是 1000 和 4000 。 去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500
示例 2:
输入:salary = [1000,2000,3000] 输出:2000.00000 解释:最低工资和最高工资分别是 1000 和 3000 。 去掉最低工资和最高工资以后的平均工资是 (2000)/1= 2000
示例 3:
输入:salary = [6000,5000,4000,3000,2000,1000] 输出:3500.00000
示例 4:
输入:salary = [8000,9000,2000,3000,6000,1000] 输出:4750.00000
提示:
3 <= salary.length <= 100
10^3 <= salary[i] <= 10^6
salary[i]
是唯一的。- 与真实值误差在
10^-5
以内的结果都将视为正确答案。
二、反思
1.自己的解法
class Solution {
public:double average(vector<int>& salary) {double res;res=accumulate(salary.begin(),salary.end(),0);res=res-*max_element(salary.begin(),salary.end())-*min_element(salary.begin(),salary.end());res=res/(salary.size()-2);return res;}
};
2.题目的解法
class Solution {
public:double average(vector<int>& salary) {double maxValue = *max_element(salary.begin(), salary.end());double minValue = *min_element(salary.begin(), salary.end());double sum = accumulate(salary.begin(), salary.end(), - maxValue - minValue);return sum / int(salary.size() - 2);}
};作者:力扣官方题解
链接:https://leetcode.cn/problems/average-salary-excluding-the-minimum-and-maximum-salary/solutions/327125/qu-diao-zui-di-gong-zi-he-zui-gao-gong-zi-hou-de-4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3.思路的异同
感觉没什么不一样的,这个题解就是“论api的应用”
三.进步的地方
没啥进步的地方,就是在熟悉了一下怎么找vector的最大值吧,*max_element和*min_element的函数使用。
这篇关于1491.去掉最低工资和最高工资后的工资平均值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!