思路
用数组下标作为数字,数组元素记录次数
注意事项
声明数组的时候,如果用
int index[10000];
会出现不为0的随机数
#include<bits/stdc++.h> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { int n, num; int index[10000] = {}; cin >> n; // 记录每个数的出现次数 for(int i = 0; i < n; i++){ cin >> num; index[num] += 1; } // 记录最大数 queue<int> q; // 找出出现次数最大的数字 int max = 0; for(int i = 0; i < 10000; i++) { if(index[i] > 0){ if(index[i] > max){ max = index[i]; queue<int> empty; swap(empty, q); q.push(i); }else if(index[i] == max){ q.push(i); } } } // 检查队列的长度 if(q.size() == 1){ cout << q.front() << endl; }else if(q.size() > 1){ int min = q.front(); q.pop(); while(!q.empty()){ int p = q.front(); q.pop(); if(p < min){ min = p; } } cout << min << endl; } return 0; }