假如有一些奶牛,他们有种类的区别,我们设黑色奶牛的id为1000010000,白色为1,诸如此类以此类推还有红色等各种颜色,接下来给你一群奶牛的颜色id让你统计每种颜色的奶牛有几头。
如过我们使用数组显然1000010000会爆空间,数组开不到那么大。可以考虑离散化,由于编号不连续,我们重新组织编号,也可以考虑TreeMap,利用《编号,数量》来表示。两者各有好处。
使用离散化的话时间上可能由于TreeMap,但是容易使人分不清变量。TreeMap由于会自动对编号(key)排序并且内部使用二分查找(由于其是有序,按照键的大小来排序),所以找寻键和存储键值对会相对较快,但是数据多了可能会爆时间,所以还是小心使用,但这仍是一个新用途。
可以参考这道题目:
P3029 [USACO11NOV] Cow Lineup S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
答案: