题目
有n个数,两两组成二元组,相差最小的有多少对呢?相差最大呢?
输入
6
45 12 45 32 5 6
输入包含多组测试数据。对于每组测试数据:
N - 本组测试数据有n个数
a1,a2...an - 需要计算的数据
保证: 1<=N<=100000,0<=ai<=INT_MAX.
输出
1 2
(第一个数表示差最小的对数,第二个数表示差最大的对数)
思路
1.0
对所有输入数字,建也给int s[INT_MAX] 数组,数组下标表示数值大小,数组的值表示该数字出现次数。
ATTENTION!
"size of array s is too large!"(数组开太大了 不可行!)
2.0 参考了网上的map
1、不用数组,改用map(节省空间,且map存储是对key从小到大排好序的)
2、差值最小的对数
首先统计value>=2的关键字x,若存在,则最小差值为0,可求次数。
若不存在,则遍历求最小差值(直接遍历就好了,map是排好序的呀orz,逐一遍历,求关键字的最小差值以及相应次数。
3、差值最大的对数