存储结构
1.要统计每个数字出现次数,可以使用一个哈希表counter存储,结构为<key = int , value = int>
由于数字大小(值域)只有10000 , 那么我们可以直接开一个大小为10000的数组(或者一个哈希表) positions,而每一个数组(哈希表的value) positions[x] 是一个可变长的数组,存储每个数组的下标。结构为<key = int , value = int[]>
模拟
你有一个长度为m的正整数序列,下表从1开始。对于这个序列,你需要统计整个序列的数字种类数,记种类数为m,之后对于每一种数字x,记其出现次数为Cx,设函数f(x)表示在序列中从左到右第⌈Cx/2⌉个数字x对应的下标(⌈y⌉表示对y向上取整,例如⌈0.5⌉=1,⌈2⌉=2)。最后你需要将所有f(x)按从小到大的顺序输出出来。
第一行一个正整数n ,表示序列长度
第二行n个由空格隔开的正整数a1,a2,.....an,表示改序列
1≤n≤100000
1≤ai≤10000
第一行输出一个正整数m,表示序列中的数字种类数
第二行输出m个由空格隔开的正整数,分别表示从小到大的顺序排序之后的函数值,末尾不要输出多余空格。
输入1
9
3 4 5 5 3 4 4 5 3
输出1
3
4 5 6
提示
一共有3,4,5三种数字,其中3的f(3)=5,f(4)=6,f(5)=4 ,排序后就是4,5,6
本题属于以下题库,请选择所需题库进行购买