class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int ret;
int length=numbers.size();
int k=length/2;
int n=0;
for(int i=0;i<length;i++)
{
if(n==0)
{
ret=numbers[i];
n=1;
}
else
{
if(ret==numbers[i])
{
n++;
}
else
{
n--;
}
}
}//algorithm头文件定义了一个count函数,其功能类似于find。这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果
n=count(numbers.begin(),numbers.end(),ret);
if(2*n>length)
{
return ret;
}
else{
return 0;
}
}
};
普通操作
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[]={1,1,1,1,4,5,5};
int s=0;
int length=sizeof(a)/sizeof(a[0]);
int ret;
int n=0;
for(int i=0;i<length;i++)
{
if(n==0)
{
ret=a[i];
n=1;
}
else
{
if(ret==a[i])
{
n++;
}
else
{
n--;
}
}
}//algorithm头文件定义了一个count函数,其功能类似于find。这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果
n=count(a,a+length,ret);
if(2*n>length)
{
cout<<ret;
}
else{
cout<<0;
}
}