# Average Salary Excluding the Minimum and Maximum Salary

## 1491. Average Salary Excluding the Minimum and Maximum Salary

Description: You are given an array of unique integers `salary` where `salary[i]` is the salary of the `ith` employee.

Return the average salary of employees excluding the minimum and maximum salary. Answers within `10-5` of the actual answer will be accepted.

Example 1:

```Input: salary = [4000,3000,1000,2000]
Output: 2500.00000
Explanation: Minimum salary and maximum salary are 1000 and 4000 respectively.
Average salary excluding minimum and maximum salary is (2000+3000) / 2 = 2500
```

Example 2:

```Input: salary = [1000,2000,3000]
Output: 2000.00000
Explanation: Minimum salary and maximum salary are 1000 and 3000 respectively.
Average salary excluding minimum and maximum salary is (2000) / 1 = 2000
```

Constraints:

• `3 <= salary.length <= 100`
• `1000 <= salary[i] <= 106`
• All the integers of `salary` are unique.
Hey everyone in this article I am providing solution of above question. i am creating two extra function known as min and max to find minimum value from array and maximum value from array respectively.

#### min() function explanation:

first we have initialized min variable= salary; so it will store first value of array as minimum value after that I have created simple for loop to iterate all elements from array. while iterating salary array one by one it will check if(min>salary[i]) we are updating min value as min=salary[i] so new min value will be updated. after iterating all element we will get min value from array. so returning it as min.
similarly,

#### max() function explanation:

first we have initialized max variable= salary; so it will store first value of array as maximum value after that I have created simple for loop to iterate all elements from array. while iterating salary array one by one it will check if(min<salary[i]) we are updating min value as max=salary[i] so new min value will be updated. after iterating all element we will get max value from array. so returning it as max.

#### public double average(int[] salary):

In main function we have created two variable avg and sum. avg will store average of employee and sum will store sum of all element present in salary array. simply we have created a loop to iterate all elements from array. Inside loop  sum+=salary[i]; or sum=sum+salary[i] will give sum of all elements.
after ending loop we are updating new sum value excluding the minimum and maximum salary .i.e   sum=sum-min(salary)-max(salary). finaly we got sum of all elements excluding the minimum and maximum salary now to find avearge we have to divide it by all element except two minimum and maximum all time so we have just returned  return sum/((salary.length)-2).

#### Solution:

class Solution {

public double average(int[] salary) {

double avg=0;

double sum=0;

for(int i=0; i<salary.length; i++)

{

sum+=salary[i];

}

sum=sum-min(salary)-max(salary);

return sum/((salary.length)-2);

}

public int min(int[] salary)

{

int min=salary;

for(int i=0; i<salary.length; i++)

{

if(min>salary[i])

{

min=salary[i];

}

}

return min;

}

public int max(int[] salary)

{

int max=salary;

for(int i=0; i<salary.length; i++)

{

if(max<salary[i])

{

max=salary[i];

}

}

return max;

}

}