这个题不难
一般大家上来想到的都是 for 循环 把每个数字的次数都统计一遍
然后还要for循环找到出现最多的次数
然后用这个次数对比数组大小
最后根据这个次数 在去找这个数字是几
我一想这个实现太麻烦了 stl 为什么不用呢?
直接 sort 排序
count 计算每个出现的数字
然后结果
看代码
int MoreThanHalfNum_Solution(vector<int> numbers) {
if (numbers.empty())
return 0;
sort(numbers.begin(), numbers.end());
int times = -1;
int max_ = -1;
int index = -1;
for (auto i = 0; i < numbers.size(); i++)
{
times = count(numbers.begin(), numbers.end(), numbers.at(i));
if (times > max_)
{
max_ = times;
index = i;
}
}
if (max_ > numbers.size() / 2)
return numbers[index];
else
return 0;
}