题目说明
方法一:
第一趟循环:找到数组中的最大值和最小值;第二趟循环:求除去最大值和最小值的数组中其余值的和。(看了官方解答之后,突然领悟也是可以将两个循环合二为一的)
//以java为例
class Solution {
public double average(int[] salary) {
int min = salary[0];
int max = salary[0];
long sum = 0;
for(int i=1; i<salary.length; i++){
if(salary[i]<min){
min = salary[i];
}
if(salary[i]>max){
max = salary[i];
}
}
for(int i=0; i<salary.length; i++){
if(min==salary[i] || max == salary[i]){
continue;
}else{
sum += salary[i];
}
}
return (double)sum/(salary.length-2);
}
}
官方解答:
其中:(java) Integer.MAX_VALUE = 2147483647;Integer.MIN_VALUE = -2147483648,即 int类型的取值范围为[-2147483648,2147483647];Math.max是指调用java中Math库中的函数来求两者之间的最大值。