-1

这是我的代码的一小部分,我正在打印在数组中找到的重复项。问题是它多次打印每个重复的事件。前任。数组 {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);
            }
        }
    }
4

2 回答 2

2

如果您被允许修改您的数组,请考虑在您将其识别为重复值后从数组中删除它(例如,将其设置为 -1 或超出正常输入范围的其他值)。

于 2013-05-08T07:18:13.550 回答
0

我假设您了解您粘贴的代码的问题,并寻求算法建议。

如果允许 cpp,可以考虑使用 STL 的 Map,key 是数字,value 是数字的索引。循环遍历数组一次,在循环遍历时,首先检查元素在地图中的出现。如果key已经存在,则输出;否则,将此元素及其索引放入地图中。

希望能帮助到你。

于 2013-05-08T07:17:21.977 回答