首页 > 代码库 > 长度为n的数组,有一个数重复出现了n/2+1次,找出

长度为n的数组,有一个数重复出现了n/2+1次,找出

问题:

长度为n的数组,有一个数重复出现了n/2+1次,找出这个数;
 
解决:
比较直接的思路是遍历每个元素,让其与剩下其他元素比较,相等一次计数器sum++,直到sum=n/2+1为止;
#include <stdio.h>#include <stdlib.h>#include <assert.h>int fun(int inp[],int size){  assert(inp!=NULL && size>1);  int i=0,j=0;  for(;i<size-1;i++){     int sum = 1;     for(j=i+1;j<size;j++){        if(inp[i]==inp[j]) sum++;     }     if(size/2+1 == sum) return inp[i];  }  return -1;}int main(){  int input[]={1,2,5,2,1,8,2,2,2,2};  int ret = fun(input,10);  printf("result = %d\n",ret);  return 0;}

结果如下:

[root@admin Desktop]# ./a.outresult = 2[root@admin Desktop]#