​LeetCode解法汇总2465. 不同的平均值数目

news/2024/5/20 6:03:38

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个下标从 0 开始长度为 偶数 的整数数组 nums 。

只要 nums 不是 空数组,你就重复执行以下步骤:

  • 找到 nums 中的最小值,并删除它。
  • 找到 nums 中的最大值,并删除它。
  • 计算删除两数的平均值。

两数 a 和 b 的 平均值 为 (a + b) / 2 。

  • 比方说,2 和 3 的平均值是 (2 + 3) / 2 = 2.5 。

返回上述过程能得到的 不同 平均值的数目。

注意 ,如果最小值或者最大值有重复元素,可以删除任意一个。

示例 1:

输入:nums = [4,1,4,0,3,5]
输出:2
解释:
1. 删除 0 和 5 ,平均值是 (0 + 5) / 2 = 2.5 ,现在 nums = [4,1,4,3] 。
2. 删除 1 和 4 ,平均值是 (1 + 4) / 2 = 2.5 ,现在 nums = [4,3] 。
3. 删除 3 和 4 ,平均值是 (3 + 4) / 2 = 3.5 。
2.5 ,2.5 和 3.5 之中总共有 2 个不同的数,我们返回 2 。

示例 2:

输入:nums = [1,100]
输出:1
解释:
删除 1 和 100 后只有一个平均值,所以我们返回 1 。

提示:

  • 2 <= nums.length <= 100
  • nums.length 是偶数。
  • 0 <= nums[i] <= 100

解题思路:

/**

* 首先,对数组进行排序,则最大值最小值直接取最前面和最后面的即可;

* 其次,因为int不能表示小数点以后的值,所以除以2之后会导致数据不准,所以我们直接求和的不同可能性即可。

*/

代码:

#include <iostream>
#include <map>
#include <list>
#include <vector>
#include <set>
#include <algorithm>
#include "Solution2465.h"

/**
 * 首先,对数组进行排序,则最大值最小值直接取最前面和最后面的即可;
 * 其次,因为int不能表示小数点以后的值,所以除以2之后会导致数据不准,所以我们直接求和的不同可能性即可。
 */
int Solution2465::distinctAverages(vector<int> &nums)
{
    sort(nums.begin(), nums.end());
    int start = 0;
    int end = nums.size() - 1;
    set<int> set;
    while (start < end)
    {
        set.insert(nums[start] + nums[end]);
        start++;
        end--;
    }

    return set.size();
};


http://www.niftyadmin.cn/n/393972.html

相关文章

【深度学习-第1篇】深度学习是什么、能干什么、要怎样学?

大概4年前本专栏发布了一篇关于神经网络的入门科普文章&#xff0c;到现在大概有小5k赞了&#xff08;Mr.看海&#xff1a;神经网络15分钟入门&#xff01;足够通俗易懂了吧&#xff09;。 这几年人工智能发生了突飞猛进的发展&#xff0c;时至今日甚至发展出了GPT-4、Midjourn…

make xxx_deconfig过程

在uboot中&#xff0c;所写的shell脚本&#xff1a;mx6ull_alientek_emmc.sh的内容如下&#xff1a; #!/bin/bash2 make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- distclean3 make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig4 make V1…

TextBlob怎么用的?有哪些具体使用场景呢?

TextBlob是一个Python库&#xff0c;提供了简单而直观的API&#xff0c;用于进行文本处理任务&#xff0c;如文本情感分析、词性标注、文本翻译等。 要使用TextBlob&#xff0c;首先需要安装该库。可以使用pip命令进行安装&#xff1a; pip install textblob 安装完成后&…

[数据结构习题]队列——用栈实现队列

[数据结构习题]队列——用栈实现队列 &#x1f449;知识点导航&#x1f48e;&#xff1a;【数据结构】栈和队列 &#x1f449;[王道数据结构]习题导航&#x1f48e;&#xff1a; p a g e 85.3 page85.3 page85.3 本节为栈和队列的综合练习题 题目描述&#xff1a; &#x1f…

Linux 实操篇-RPM 与YUM

Linux 实操篇-RPM 与YUM rpm 包的管理 介绍 rpm 用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM是RedHat Package Manager&#xff08;RedHat 软件包管理工具&#xff09;的缩写&#xff0c;类似windows 的set…

INTJ型人格适合选择哪些专业?

INTJ型人格是一种理性、独立、逻辑性强的人格类型&#xff0c;他们通常在思考问题时会非常深入&#xff0c;而且对于目标的追求非常明确。 INTJ型人格的人通常在职业发展中追求自我提升和成长&#xff0c;他们善于分析问题、制定计划和实现目标&#xff0c;具有很强的自我意识…

【JUC基础】14. ThreadLocal

目录 1、前言 2、什么是ThreadLocal 3、ThreadLocal作用 4、ThradLocal基本使用 4.1、创建和初始化 4.2、存储和获取线程变量 4.3、清理和释放线程变量 4.4、小结 4.5、示例代码 5、ThreadLocal原理 5.1、set() 5.2、get() 5.3、变量清理 5.4、ThreadLocalMap 6、…

CXGRid实现拖动鼠标多选

要实现在CXGrid中拖动鼠标多选&#xff0c;您可以按住鼠标左键并拖动鼠标&#xff0c;直到选择了要选择的单元格或行。您可以在拖动过程中按住Shift键来限制选择范围。拖动选择的单元格或行时&#xff0c;您可以按住Ctrl键来添加或删除单元格或行的选择。当您完成选择时&#x…