我正在将文件内容读入9元素数组。我需要检查这个数组中是否有任何重复项。我需要这样做而无需重新排序或更改数组的任何内容。
我将如何做到这一点?
答案 0 :(得分:14)
使用蛮力。
你在数组中只有9个元素,所以只需要36次比较就可以找到任何副本:
int count = sizeof(array) / sizeof(array[0]);
for (int i = 0; i < count - 1; i++) { // read comment by @nbro
for (int j = i + 1; j < count; j++) {
if (array[i] == array[j]) {
// do whatever you do in case of a duplicate
}
}
}
答案 1 :(得分:-2)
您可以使用此方法:
// sort a copy of the array with the algorithm you like the most and then...
bool duplicates = false;
for(i = 0; i < 7; i++)
{
if (array[i] == array[i+1])
{
duplicates = true;
break;
}
}
答案 2 :(得分:-5)
int main()
{
srand(time(0));
int data[10];
for(int c=0;c<=9;c++)
{
bool found = false;
while(!found)
{
data[c]=rand()%10+1;
found=true;
for(int r=0;r<c;r++)
{
if(data[c]==data[r]) found=false;
}
}
}
for(int c=0;c<=9;c++) cout << data[c] << endl;
return 0;
}