数组中出现次数超过一半的数字

来源:互联网 发布:js table 高度 编辑:程序博客网 时间:2024/06/06 03:27
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
#define N 100005
int findMoreHalf(int a[],int n)
{
    int i;
    int num,count;
    for(i=0;i<n;i++)
    {
        if(0==i)
        {
            num=a[i];
            count=1;
        }else
        {
            if(num==a[i])
                count++;
            else
                count--;
            if(count==0)
            {
                num=a[i];
                count=1;
            }
        }
    }
    count=0;
    for(i=0;i<n;i++)
        if(num==a[i])
            count++;
    if(count>n/2)
        return num;
    return -1;
}
int findMoreHalfbySort(int a[],int n)
{
    sort(a,a+n);
    int temp=a[n/2];
    int count=0;
    for(int i=0;i<n;i++)
        if(a[i]==temp)
            count++;
    if(count>n/2)
        return temp;
    return -1;
}
int main(int argc,char *argv[])
{
    freopen("input.txt","r",stdin);
    int a[N],n,i;
    while(scanf("%d",&n)!=EOF&&n)
    {
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        int res=findMoreHalfbySort(a,n);
        printf("%d\n",res);
    }
    return 0;
}

0 0
原创粉丝点击