数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9 的数组{1,2,3,2,2,4,5,2}.由于数字2出现了5次,超过了数组长度的一半,因此输出2.若不存在,则输出0。
题解:
根据题目要求,可以通过多种方法进行测试。
1)排序—搜索法
首先对数组进行排序,相同数字位于连续的位置。因此,计算每个数字出现的次数,如果超过一半,则退出遍历,输出结果。若未超过一般,则计数重置为0,数字修改为下一数字。
代码如下:
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int res=0;
if(numbers.size()==0) return res;
if(numbers.size()==1) return numbers[0];
sort(numbers.begin(),numbers.end());
int half=numbers.size()/2;
int temp=numbers[0];
int cnt=0;