这是我的代码的一小部分,我正在打印数组中的重复项。问题是它不止一次打印每个重复的事件。防爆。数组{1,2,3,4,5,6,7,8,9,0,2,2)打印
value 2 at position 1 is also at position 10 value 2 at position 1 is also at position 11 value 2 at position 10 is also at position 11
而不仅仅是
value 2 at position 1 is also at position 10 value 2 at position 1 is also at position 11
for(i = 0; i < num_count; ++i){
for (j = i + 1; j < num_count; j++) {
if (num[i] == num[j]){
printf("\nvalue %d at position %d is also at position %d", num[i], i, j);
}
}
}
答案 0 :(得分:2)
如果您被允许修改数组,请考虑在将数组标识为重复后从数组中删除一个值(例如,将其设置为-1或超出正常输入范围的其他值)。
答案 1 :(得分:0)
我假设您了解了已粘贴代码的问题,并询问算法建议。
如果允许使用cpp,您可以考虑使用STL的Map,key是数字,value是数字的索引。循环遍历数组,在循环时,首先检查元素在地图中的出现次数。如果密钥已存在,则输出;否则,将此元素及其索引放入地图中。
希望它有所帮助。