/**
* 找出数组中重复的数字
* 在一个长度为n的数组里所有的数字都在0~n-1的范围内,数组中某些数字是重复的,但不知道有几个数字重复了,也不知道数字重复了几次。
* 请找出数组中任意一个重复的数字,例如,如果输出的长度为7的数组{2, 3, 1, 0, 2, 5, 3}, 那么对应的重复的数字是2或者3。
* 输入:[2, 3, 1, 0, 2, 5, 3]
* 输出:2 3
*/
#include <stdio.h>
/**
* N 的长度应该等于实际输入的数组的长度
*/
#define N 100
/**
* print array data, n为数组长度
* */
void printData(int data[], int n);
/**
* data为输入的数组,n为数组的长度
* */
void findDuplicateElem(int data[], int n);
int main(int argc, char* argv[])
{
int data[] = {2, 3, 1, 0, 2, 5, 3};
printf("input data: \n");
printData(data, sizeof(data)/sizeof(data[0]));
printf("output duplicate elem:\n");
findDuplicateElem(data, sizeof(data)/sizeof(data[0]));
return 0;
}
void findDuplicateElem(int data[], int n)
{
int dupFlag[N] = {0};
int i;
for ( i = 0; i < n; ++i){
if (dupFlag[data[i]])
{
printf("%d \t", data[i]);
}
dupFlag[data[i]] = 1;
}
printf("\n");
}
void printData(int data[], int n)
{
int i;
for(i = 0; i < n; ++i)
{
printf("%d, \t", data[i]);
}
printf("\n");
}
找出数组中重复的数字
最新推荐文章于 2020-11-28 19:25:34 发布