查找数组中元素出现次数最多的元素,不同于一般的排序和使用Map的办法。可参考
1 #include<iostream>
2 using namespace std;
3
4 int main()
5 {
6 int a[8] = {1,2,3,4,3,2,5,3};
7 int len = sizeof(a)/sizeof(a[0]);
8
9 int targt = a[0];//哨兵取数组的第一个值,当然也可以取其余的值
10 int times = 1;//记录元素的次数 将targt和数组中的其余元素进行比较 如果等于times加一否则减一 当times = 0 的时候,targt的值换做数组的下一个值
11
12 for(int i = 0; i < len; i++)
13 {
14 if(times == 0)
15 {
16 targt = a[i];
17 times = 1;
18 }
19 else if(targt == a[i]) //出现的次数越多times的值越大
20 {
21 times++;
22 }
23 else {
24 times--;
25 }
26 }
27
28 cout<<targt<<' ';
29
30 }