2465.不同的平均值数目
给你一个下标从 0 开始长度为 偶数 的整数数组 nums 。
只要 nums 不是 空数组,你就重复执行以下步骤:
找到 nums 中的最小值,并删除它。
找到 nums 中的最大值,并删除它。
计算删除两数的平均值。
两数 a 和 b 的 平均值 为 (a + b) / 2 。
比方说,2 和 3 的平均值是 (2 + 3) / 2 = 2.5 。
返回上述过程能得到的 不同 平均值的数目。
注意 ,如果最小值或者最大值有重复元素,可以删除任意一个。
分析
该题一看非常简单,思路是排序然后取最大最小值并且删除,然后可以把求得平均值去重,再求长度即是结果。
直接上代码class Solution: def distinctAverages(self, nums: List[int]) -> int: res=[] while(len(nums)!=0): nums.sort() min=nums.pop(0) max=nums.pop(-1) mid = (min + max) / 2 res.append(mid) return len(set(res))
虽然但是,代码还是太长了,因此参考别人的代码。class Solution: def distinctAverages(self, nums: List[int]) -> int: nums.sort() return len(set(nums[i] + nums[-i - 1] for i in range(len(nums) // 2)))
看他的代码可知,使用了双指针