题目描述
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。
例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。
对于给定的由n个自然数组成的多重集S,计算S的众数及其重数。
输入
第1行为多重集S中元素个数n;在接下来的n行中,每行有一个自然数。
输出
有2行,第1行是众数,第2行是重数。
样例输入
6
1
2
2
2
3
5
样例输出
2
3
code:
import java.util.Scanner;
public class Main{
static int[][] solve(int[][] a, int n) {
int[][] b = new int[n][2];
int[][] c = new int[1][2];
int count = 0;
int m = 0;
for (int i = 0; i < a.length; i++) {
if (a[i][1] == 0) {
a[i][1] = 1;
m = a[i][0];
b[count][0] = m;
++(b[count][1]);
for (int j = i + 1; j < b.length; j++) {
if (a[j][0] != m)
continue;
else {
a[j][1] = 1;
++(b[count][1]);
}
}
++count;
} else
continue;
}
int max = 0;
int num = 0;
for (int i = 0; i < b.length; i++) {
if (max < b[i][1]) {
max = b[i][1];
num = b[i][0];
} else
continue;
c[0][0] = num;
c[0][1] = max;
}
return c;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] a = new int[n][2];
for (int i = 0; i < n; i++) {
a[i][0] = scanner.nextInt();
a[i][1] = 0;
}
scanner.close();
int[][] num = solve(a, n);
System.out.println(num[0][0]);
System.out.println(num[0][1]);
}
}