方法一:排序,找出最中间的那个数,就是,算法时间复杂度,o(nlogn)
方法二:用临时变量,一个存放当前的数,一个用来计数
// 求一串数中最多的数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include <vector>
using namespace std;
int findOverhalf(vector<int>& vec){
int i = 0,a=vec[0],b=0;
for (i = 1; i < vec.size(); i++){
if (b == 0){
a = vec[i];
}
if (vec[i] == a){
b++;
a = vec[i];
}
else if(vec[i]!=a&&b>0){
b--;
}
}
return a;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> ve = {1,1,1,1,3,2,2,2,2,2,2};
int b = findOverhalf(ve);
cout << b << endl;
return 0;
}