选众数
定义测试变量 test,假定它是众数
定义变量 count,统计出现次数。
1/ 假定首元素为众数,出现一次,次数+1;
2/ 判断后续元素与众数的异同,若相同,次数+1;若相异,次数-1;
3/ 当次数为0时,重新确定众数,直到数组尾部。
4/ 遍历数组,统计选定众数出行的次数;
5/ 次数大于一半,返回该数。
6/ 否则,返回0;
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int len=numbers.size();
// 找潜在的大于数组一半长度的众数
// 假定为初始元素
int test=0;
int count=0; //计数器
for(int i=0;i<len;i++){
if(count==0){
test=numbers[i];
count++;
}
else
{
if (test==numbers[i])
count++;
else count--;
}
}
count=0;//清零
//检验数组众数与选出的潜在对象是否相等
for(const int k:numbers){ //vecotr 遍历数组
if(k==test)count++;
}
if(count>numbers.size()/2)
return test;
return 0;
}
};
京公网安备 11010502036488号