码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-08-20 16:11:32      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   io   for   问题   div   

问题:

长度为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.out
result = 2
[root@admin Desktop]# 

 

 
 
 

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

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

标签:des   style   blog   color   io   for   问题   div   

原文地址:http://www.cnblogs.com/McQueen1987/p/3924724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!