不同的平均值数目【LC2465】
给你一个下标从 0 开始长度为 偶数 的整数数组
nums
。只要
nums
不是 空数组,你就重复执行以下步骤:
- 找到
nums
中的最小值,并删除它。- 找到
nums
中的最大值,并删除它。
- 计算删除两数的平均值。
两数
a
和b
的 平均值 为(a + b) / 2
。
- 比方说,
2
和3
的平均值是(2 + 3) / 2 = 2.5
。
返回上述过程能得到的 不同 平均值的数目。
注意 ,如果最小值或者最大值有重复元素,可以删除任意一个。
准备做周赛
- 思路
将数组进行排序,那么就可以通过双指针定位到每轮需要删除的两个元素,求出平均值,放入哈希表中,最后返回哈希表的大小即可 - 实现
class Solution { public int distinctAverages(int[] nums) { int n = nums.length; Arrays.sort(nums); Set<Double> set = new HashSet<>(); for (int i = 0; i < n / 2; i++){ double avg = (nums[i] + nums[n - 1 - i]) * 1.0 / 2; set.add(avg); } return set.size(); } }