剑指offer面试题51.
#include <stdio.h>
#include <stdlib.h>
int find_dump(int *num, int len, int *dump)
{
int i;
for (i=0; i<len; i++)
{
if (i + 1 != num[i] &&
num[i] == num[num[i] - 1])
{
*dump = num[i];
return 1;
}
while(num[i] != i + 1)
{
int tmp = num[num[i] - 1];
num[num[i] - 1] = num[i];
num[i] = tmp;
}
}
return 0;
}
int main()
{
int dump;
int a[] = {1,2,2,5,3,3};
printf("%d\n",find_dump(a,sizeof(a)/sizeof(int),&dump));
printf("%d\n",dump);
return 0;
}