现在的位置: 首页 > 综合 > 正文

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

2013年10月27日 ⁄ 综合 ⁄ 共 475字 ⁄ 字号 评论关闭

我们在遍历数组的时候保留两个变量,一个数组中的数字,另一个是数字出现的次数。当我们遍历到下一个数字的时候,如果下一个数字与我们当前保存的数字相同,则个数加1,如果不同则减1,由于我们要找的数字出现的次数比其他数字出现的次数的总和还多,那么要找的数字肯定是最后一个使次数为1时对应的数字。

代码如下:

#include<iostream>
using namespace std;
int Find(int array[],int length);
int main()
{
    int number[10]={1,2,3,4,4,4,4,4,4,5};
    cout<<Find(number,10);
    return 0;
}
int Find(int* array,int length)
{
    int result = array[0];
    int times=1;
    for(int i=0;i<length-1;i++)
    {
        if(times==0)
        {
            result=array[i];
            times=1;
        }
        else if(array[i]==result)
            times++;
        else
            times--;
    }
    return result;
}

抱歉!评论已关闭.