出现次数超过一半的数

作者: 逍遥_9353 | 来源:发表于2018-04-26 20:43 被阅读30次

/*

出现次数超过一半的数

    数组中有一个数出现的次数超过了数组长度的一半,找出这个数。

*/

/*

思路:

    定义两个变量,一个用来保存数组中遍历的某个数,另一个用来表示

数组中当前数出现的次数,其中当前数出现的次数初始化为1,当遍历

到数组中下一个数的时候:如果下一个数与保存数组中遍历的某个数

相同时,则当前数出现的次数加1,否则减1。每当当前数出现的次数变

为0时,用来保存数组中的遍历的某个数就要保存下一个数,并把当前

出现的次数重新设置为1,直到遍历完整个数组为止。

*/

#include<iostream>

using namespace std;

int main()

{

int array[100],n,i,ntimes=1,candidate;

cin>>n;

for(i=0;i<n;i++)

cin>>array[i];

candidate=array[0];

for(i=1;i<n;i++)

{

if(ntimes==0)

{

candidate=array[i];

ntimes=1;

}

else

{

if(candidate==array[i])

ntimes++;

else

ntimes--;

}

}

cout<<candidate<<endl;

return 0;

相关文章

网友评论

    本文标题:出现次数超过一半的数

    本文链接:https://www.haomeiwen.com/subject/klamlftx.html