【发布时间】:2016-09-24 22:58:32
【问题描述】:
假设我有一个整数数组 {100, 80, 90, 100, 80, 60}
所以我想计算这些重复项并将这些计数器保存以备后用。 因为每个重复的数字都应该除以计数器
like 100 被复制了 2 次,所以它们应该是 50 个。
为了查找重复项,我使用了排序。
std::sort(array, array + number);
for(int i = 0; i < number; i++) {
if(array[i] == array[i+1])
counter++;
}
并且我尝试制作计数器数组以将它们保存在每个数组中。但它没有用。请给我一些更好的主意。
【问题讨论】:
-
正如所写,
array[i+1]中的索引超出了数组的顶部。将循环更改为仅运行到i < number - 1。这不会解决计数问题,因为代码会计算所有重复项,而不是单独计算每个重复项。 -
您要计算每个重复项(例如 100:2 和 80:2)吗?
-
解决这些问题最经典的方法是二叉树,如果数量足够随机,否则为平衡二叉树。其他哈希表。
-
是的,所以我想将每个 100 更改为 50 @Christophe
-
数组中的
ints 是否被限制在一个范围内?我的意思是,举个例子,你不知道有多少和什么,但你知道它们在[N,M[的范围内。是这样吗?
标签: c++ duplicates