问题:
长度为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; }
结果如下:
[[email protected] Desktop]# ./a.out result = 2 [[email protected] Desktop]#
长度为n的数组,有一个数重复出现了n/2+1次,找出
时间: 2024-12-26 00:11:53