您的位置:首页 > 其它

求出现次数大于数组长度一半的那个数

2016-02-24 21:33 267 查看
方法一:排序,找出最中间的那个数,就是,算法时间复杂度,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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: