数组中出现次数超过一半数组

在这里插入图片描述

这个题不难

一般大家上来想到的都是 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;
}

在这里插入图片描述

发布了179 篇原创文章 · 获赞 396 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/weixin_42837024/article/details/105098407