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 <= 1001000 <= salary[i] <= 106- All the integers of
salaryare 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);
}
}
三、思路筆記
我有兩種做法,一種是排序去掉頭尾後,加總求平均;
另一種是,找出最大與最小值,加總去掉這兩值求平均。
推薦第二種。