题目:
小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
输入描述:
输入包含多组测试数据。
对于每组测试数据:
N - 本组测试数据有n个数
a1,a2…an - 需要计算的数据
保证:
1<=N<=100000,0<=ai<=INT_MAX.
输出描述:
对于每组数据,输出两个数,第一个数表示差最小的对数,第二个数表示差最大的对数。
输入例子:
6
45 12 45 32 5 6
输出例子:
1 2
思路:
先排序,然后对有序数组分别求差值最大的对数和差值最小的对数。
排序之后,
差值最大的好求,看有序数组有几个最小值和几个最大值,相乘即可。
差值最小的,由于是有序数组,必定是相邻的差值较小,故由排序后的有序数组求出差值最小值。如果差值最小值为0,则算出数组中相等的元素的对数;如果差值最小值不为0,则只需计算有多少个最小值即可。
答案:

该博客主要介绍了腾讯笔试中的一道编程题,内容涉及如何找到n个数中两两组合的差值最小对数和差值最大对数。博主提出了解决方案,即先对数组进行排序,然后通过分析排序后的数组找出差值最大和最小的对数。对于差值最小的情况,如果差值为0,需要考虑相等元素的对数;若差值不为0,只需计算最小值的个数。给出的输入输出例子验证了这种方法的正确性。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



