首页 > 代码库 > 长度为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]#
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。