1491. Average Salary Excluding the Minimum and Maximum Salary

1491. Average Salary Excluding the Minimum and Maximum Salary

一、題目

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.

 

二、程式作法

/*排序去掉頭尾後,加總求平均*/
public class Solution
{
    public double Average(int[] salary)
    {
        for (int i = 0; i < salary.Length - 1; i++)
        {
            int minIdx = i;
            for (int j = i + 1; j < salary.Length; j++)
                if (salary[minIdx] > salary[j])
                    minIdx = j;

            int temp = salary[i];
            salary[i] = salary[minIdx];
            salary[minIdx] = temp;
        }

        int sum = 0;
        for (int i = 1; i < salary.Length - 1; i++)
            sum += salary[i];

        return (double)sum / (double)(salary.Length - 2);
    }
}

 

/*找出最大與最小值,加總去掉這兩值求平均*/
public class Solution
{
    public double Average(int[] salary)
    {
        int max = salary[0], min = salary[0];

        for (int i = 1; i < salary.Length; i++)
        {
            if (salary[i] > max)
                max = salary[i];
            if (salary[i] < min)
                min = salary[i];
        }

        int sum = 0;
        for (int i = 0; i < salary.Length; i++)
            sum += salary[i];

        return (double)(sum - min - max) / (double)(salary.Length - 2);
    }
}

 

三、思路筆記

我有兩種做法,一種是排序去掉頭尾後,加總求平均;

另一種是,找出最大與最小值,加總去掉這兩值求平均。

推薦第二種。