我是程序员;您好程先生;叫我序员就好了程序书海码农的世界

出现次数超过一半的数

2018-04-26  本文已影响30人  逍遥_9353

/*

出现次数超过一半的数

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

*/

/*

思路:

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

数组中当前数出现的次数,其中当前数出现的次数初始化为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;

上一篇下一篇

猜你喜欢

热点阅读