目标
你有一个初始为空的浮点数数组 averages。另给你一个包含 n 个整数的数组 nums,其中 n 为偶数。
你需要重复以下步骤 n / 2 次:
- 从 nums 中移除 最小 的元素 minElement 和 最大 的元素 maxElement。
- 将 (minElement + maxElement) / 2 加入到 averages 中。
返回 averages 中的 最小 元素。
示例 1:
输入: nums = [7,8,3,4,15,13,4,1]
输出: 5.5
解释:
步骤 nums averages
0 [7,8,3,4,15,13,4,1] []
1 [7,8,3,4,13,4] [8]
2 [7,8,4,4] [8,8]
3 [7,4] [8,8,6]
4 [] [8,8,6,5.5]
返回 averages 中最小的元素,即 5.5。
示例 2:
输入: nums = [1,9,8,3,10,5]
输出: 5.5
解释:
步骤 nums averages
0 [1,9,8,3,10,5] []
1 [9,8,3,5] [5.5]
2 [8,5] [5.5,6]
3 [] [5.5,6,6.5]
示例 3:
输入: nums = [1,2,3,7,8,9]
输出: 5.0
解释:
步骤 nums averages
0 [1,2,3,7,8,9] []
1 [2,3,7,8] [5]
2 [3,7] [5,5]
3 [] [5,5,5]
说明:
- 2 <= n == nums.length <= 50
- n 为偶数。
- 1 <= nums[i] <= 50
思路
有一个数组 nums
,元素个数为偶数,取其最大值与最小值的平均数加入 averages
浮点数数组,并将其从 nums
中删除。求 averages
数组的最小值。
先将数组 nums
排序,然后取前后两个元素计算平均数,取最小值即可。
代码
/**
* @date 2024-10-16 8:49
*/
public class MinimumAverage3194 {
public double minimumAverage(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
int end = n / 2;
n = n - 1;
double res = Double.MAX_VALUE;
for (int i = 0; i < end; i++) {
res = Math.min(res, (nums[i] + nums[n - i]) / 2.0);
}
return res;
}
}