您的位置:首页 > 其它

找出一个数组中出现次数超过一半的元素

2014-04-02 17:37 417 查看
遍历数组,并且保存两个值:一个是数组中的一个数字,一个是次数。当遍历下一个数字时,如果下一个数字和当前保存的数字相同,则次数加1;如果不同则次数减1。如果次数为0,则需要保存下一个数字,并把次数设为1。由于要找的数字出现的次数比其他所有数字出现的次数之和还要多,所以要找的数字肯定是最后一次把次数设为1的那个数字。

代码如下:

#include<iostream>

using namespace std;

int lookup(int a[],int length)

{

   int result=a[0];

   int times=1;

   for(int i=1;i<length;i++)

   {

      if(times==0)
 {
    result=a[i];
times=1;
 }
 else if(result==a[i])
 times++;
 else
 times--;

   }

  return result;

}

int main()

{
int a[]={1,2,1,3,4,5,1,1,1,1,2,4};
int k=lookup(a,12);
cout<<k<<endl;
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐