一. 题目
-
题目
给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。
-
示例
二. 方法一
-
解题思路
使用了sum(), max() 和 min()函数 -
解题代码
def average(self, salary: List[int]) -> float: return (sum(salary) - max(salary) - min(salary)) / (len(salary) - 2)
-
分析
时间复杂度: O(n)
空间复杂度: O(1)
三. 方法二
-
解题思路
遍历获取最大最小值以及求和 -
解题代码
def average(self, salary: List[int]) -> float: sum_salary, min_salary, max_salary = 0, 100001, 99 for ele in salary: sum_salary += ele if ele < min_salary: min_salary = ele if ele > max_salary: max_salary = ele return (sum_salary - min_salary - max_salary) / (len(salary) - 2)
-
分析
时间复杂度: O(n)
空间复杂度: O(1)
理论上来说这个方法比方法一效率高一丢丢, 因为方法一时间复杂度为O(3n)