概述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0;
思路1:
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int len=numbers.size();
if(len==0) return 0;
int times=1;
int res=numbers[0];
for(int i=1;i<len;i++)
{
//统计函数。
if(numbers[i]==res)
{
times++;
}
else if(times>0)
{
times--;
}
else {
times=1;
res=numbers[i];
}
}
//判断多余的如何判断。
int cnt=0;
for(int i=0;i<len;i++)
if(numbers[i]==res)
cnt++;
if(len<2*cnt)
return res;
else
return 0;
}
};
最后
以上就是温暖牛排为你收集整理的数组中有一个数字出现的次数超过数组长度的一半的全部内容,希望文章能够帮你解决数组中有一个数字出现的次数超过数组长度的一半所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复