刷题笔记:牛客腾讯笔试题——有趣的数字

本文记录了一道腾讯笔试题,题目要求找出一组数字中两两组合的最大和最小差值对。文章分析了求解最大差值对的直接方法,并指出在全相同数组时的特殊情况。对于最小差值对,文章详细阐述了解题思路,包括处理重复数字的问题,并提供了相应的解题代码。
摘要由CSDN通过智能技术生成

题目

小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?

输入描述:

 输入包含多组测试数据。
 对于每组测试数据:
 N - 本组测试数据有n个数
 a1,a2...an - 需要计算的数据
 保证:
 1<=N<=100000,0<=ai<=INT_MAX.

输出描述:

对于每组数据,输出两个数,第一个数表示差最小的对数,第二个数表示差最大的对数。

示例1
输入

6
45 12 45 32 5 6

输出

1 2

思路

该题考察看似简单,实际坑很深。首先吐槽下题目,上厕所也要考虑这么多吗?不过真的是个好题,这就是腾讯崇尚的价值观?害怕。。。。。

求最大值比较容易,对数组排序后,队尾减去队首就是最大差值。需要考虑队首和队尾存在重复数的情况,也就是要分别找数组中最大数和最小数的个数 Nmax N m a x Nmin N m i n ,最大差值对数就等于 Nm

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值