离散化处理
提交数: 1564, 通过率: 39.83%, 平均分: 56.68
题目描述:
在程序设计过程中,经常要用到离散化处理,将原始数据排序,使用排序后的编号(rank值)作为新的关键字进行操作。排序后所有键值相同的数离散化处理后对应同一个编号。
输入格式:
第1行:一个整数N。
第2行:有N个整数,每个数在10^9以内。
输出格式:
依次输出每个数的rank编号。
样例输入:
4 28 5 6 5
样例输出:
3 1 2 1
提示:
1<=N<=100,000。
注意:可能有相同整数。
算法1提示:
1) 先sort;
2) 去重;
3) 二分查找每个值的位置。
算法2提示:
每个结构体元素中记录3项内容:(1)值,(2)原来的下标,(3)按值排序后的整理下标。
1)先按结构体中的值排序;
2)整理排序后的序号;
3)再按原始下标排序,排序后直接输出。
时间限制: 1000ms空间限制: 128MB
来源: 原创