Leetcode---2465.不同的平均值数目

简介: 简单算法

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)))

看他的代码可知,使用了双指针

相关文章
|
6月前
|
算法 测试技术 C#
区间合并|LeetCode2963:统计好分割方案的数目
区间合并|LeetCode2963:统计好分割方案的数目
|
4月前
|
存储 算法
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
|
4月前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
33 0
|
6月前
[leetcode~数位动态规划] 2719. 统计整数数目 hard
[leetcode~数位动态规划] 2719. 统计整数数目 hard
|
6月前
|
算法
"刷题记录:哈希表+双指针 | leetcode-2465. 不同的平均值数目 "
该文段是一篇关于编程题目的解答,主要讨论如何找到数组中所有不同平均值的个数。作者首先使用排序和哈希集来解决,将数组转为列表排序后,通过双指针计算平均值并存入哈希集以去重。然后,作者发现可以优化方案,通过双指针在排序后的数组中直接计算两数之和,用哈希集记录不重复的和,从而避免实际计算平均值,提高了算法效率。最终代码展示了这两种方法。
57 0
|
6月前
|
算法 测试技术 C#
【图论】【分类讨论】LeetCode3017按距离统计房屋对数目
【图论】【分类讨论】LeetCode3017按距离统计房屋对数目
|
6月前
|
存储
leetcode2744. 最大字符串配对数目
leetcode2744. 最大字符串配对数目
32 0
|
6月前
|
Serverless
leetcode2719. 统计整数数目
leetcode2719. 统计整数数目
46 0
|
6月前
|
算法 测试技术 C#
LeetCode2444: 统计定界子数组的数目
LeetCode2444: 统计定界子数组的数目
|
6月前
|
算法 机器人 测试技术
二分查找|双指针:LeetCode:2398.预算内的最多机器人数目
二分查找|双指针:LeetCode:2398.预算内的最多机器人数目