用一种简单的办法来解决
定义两个变量,从第一个数开始找,并记录第一个数为result为需要找的数,它出现的次数初始化为:times=1
以后只要找到和result相等的数rimes++,否则times–
当times等于0的时候,改变result等于当前指向的数,继续找
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];//输入保证正确
for(int i=0; i<n; i++)
cin >> arr[i];
int result = arr[0];
int time = 1;
for(int i=1; i<n; i++) {
if(arr[i] == result)
time++;
else {
if(--time == 0) {
result = arr[i];
time = 1;
}
}
}
cout << result << endl;
}
本文介绍了一种简单有效的算法,用于从一组整数中找出出现次数最多的数(众数)。该算法通过遍历数组并使用计数的方式跟踪当前候选众数,能够在线性时间内解决问题。
996

被折叠的 条评论
为什么被折叠?



