在一个数组中的数字是连续的,但是这个数组中有一个数重复出现了一次,找出这个数。
#include <stdio.h>
int main()
{
int i;
int tmp=10;
int swap=0;
int a[10]={1,3,5,7,8,6,9,2,3,4};
for(i=0;i<10;i++)
{
if(a[tmp-1]!=tmp)
{
swap=a[tmp-1];
a[tmp-1]=tmp;
tmp=swap;
}
else
{
printf("重复的数为:%d\n",tmp);
break;
}
}
return 0;
}
方法二:
利用额外的一个数组b 来存原数组中出现的数字的次数
当这个数第二次出现时,数组b内对应位置会多+1。
#include <stdio.h>
int main()
{
int i;
int tmp=0;
int a[5]={2,4,1,3,2};
int count[5]={0};
for(i=0;i<5;i++)
{
tmp=a[i];
if(count[tmp-1]==1)
{
printf("重复的数为:%d\n",tmp);
}
else
{
count[tmp-1]++;
}
}
return 0;
}