今天学到了一个做了几道题:
1、在时间复杂度为一的情况下找出数组中重复的数字,其中数组a[n]中的数为1~n-1;
#include <stdio.h>
int main()
{
int temp;
int i;
int a[5]={1,2,4,3,3};
int count[5]={0};
for (i=0;i<5;i++)
{
temp = a[i];
count[temp-1]++;
if(count[temp-1]==2)
{
printf ("%d\n",temp);
}
}
return 0;
}
使用2个数组,第一个放置原数组,即a[n],设置第二个数组count[n],其中元素初始值都为0,对a[n]进行遍历,从a[0]~a[n-1]一一作为count[n]的下标,设置变量temp,使temp=a[n],将(temp-1)填入count[n]中,让count[temp-1]++,一旦count[temp-1]出现2则输出temp;
2、只用一个字符串和一个变量,找出一个数组中重复的数字,其中数组a[n]中的数为1~n-1;
#include <stdio.h>
int a[5]={3,4,1,2,4};
int temp;
int swap;
int main()
{
temp=5;
while (temp != a[temp-1])
{
swap=a[temp-1];
a[temp-1]=temp;
temp=swap;
}
printf ("%d\n",temp);
}
最后,感谢杰哥!!!!