问题描述】
输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。
【输入形式】
先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。
【输出形式】
在标准输出上输出出现次数最多的整数及其出现次数,两者以一个空格分隔;若出现次数最多的整数有多个,则按照整数升序分行输出。
【样例输入】
10 0 -50 0 632 5813 -50 9 -50 0 632
【样例输出】
-50 3 0 3
【样例说明】
输入了10个整数,其中出现次数最多的是-50和0,都是出现3次。
【评分标准】
该程序要求输出出现次数最多的整数和出现次数。
/*假设数据为
10
0 -50 0 632 5813 -50 9 -50 0 632
*/
//先把这些整数按升序排序
//得到 -50 -50 -50 0 0 0 9 632 632 5813
//然后在遍历这些整数
int max=1;
int p =1;
for(int i =2;i<n;i++){
if(a[i-1]==a[i]){
p++;
}else{
p=1;
}
if(p>max){
max=p;
}
}
//如果前一个数跟这个数相同,那么p+1,如果p大于max,就把p赋值给max
//遍历结束后max就是某个数字出现的最多次数了
p=1
for(int i =2;i<n;i++){
if(a[i-1]==a[i]){
p++;
}
if(p==max){
System.out.println(a[i]+" "+max);
}
}
//将p重置为1,再次遍历如果p与max相同,那么说明这个数就是我们要找的
//然后输出,由于已经排序完成,输出的顺序就是升序了
public static void main(String[] args) {
int[] arr = {0, -50, 0, 632, 5813, -50, 9, -50, 0, 632};
//计算每个数出现次数
Map<Integer, Integer> map = new HashMap<>();
for (int a : arr) {
map.put(a, map.containsKey(a) ? (map.get(a) + 1) : 1);
}
//过滤出出现次数最多的数
Map<Integer, Integer> filterMap = new HashMap<>();
//如果出现次数相同,则按优先从小到大排序
Queue<Integer> num = new PriorityQueue<>();
int max = 1;
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() == max) {
filterMap.put(entry.getKey(), entry.getValue());
num.add(entry.getKey());
} else if (entry.getValue() > max) {
max = entry.getValue();
filterMap.clear();
filterMap.put(entry.getKey(), entry.getValue());
num.clear();
num.add(entry.getKey());
}
}
//打印结果
int a;
while (!num.isEmpty()) {
a = num.poll();
System.out.println(a + " " + filterMap.get(a));
}
}
package exercise;
import java.util.Scanner;
public class ZhengShuChuXianDeCiShu6 {
public static void main(String args[])
{
int number;
Scanner in = new Scanner(System.in);
number = in.nextInt();
int[] a = new int[number];
int i , j;
for(i = 0 ; i < number ; i++)
a[i] = in.nextInt();
int[] b = new int[number];
for(i = 0 ; i < number ; i++)
{
int CiShu = 1;
for(j = i+1 ; j < number ; j++)
{
if(a[j] == a[i])
CiShu++;
}
b[i] = CiShu;
}
int maxCiShu = b[0];
int maxNumber = 0;
for(i = 1 ; i < number ; i++)
{
if(b[i] > b[0])
{
maxCiShu = b[i];
maxNumber = i;
}
}
int temp = 0;
int temp2 = 0;
int maxNumber2 = 0;
int maxNumber3 = 0;
for(i = maxNumber+1 ; i < number ; i++)
{
if(b[i] == maxCiShu)
{
temp =1;
maxNumber2 = i;
break;
}
}
if(temp == 1)
{
for(i = maxNumber2+1; i < number ; i++)
{
if(b[i] == maxCiShu)
{
temp2 = 1;
maxNumber3 = i;
}
}
}
if(temp == 0)
System.out.println(a[maxNumber]+" "+maxCiShu);
if(temp == 1 && temp2 == 0)
{
if(a[maxNumber] < a[maxNumber2])
{
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
}
else
{
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
}
}
if(temp == 1 && temp2 == 1)
{
if(a[maxNumber2] > a[maxNumber])
{
if(a[maxNumber3] > a[maxNumber2])
{
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber3]+" "+maxCiShu);
}
else
{
if(a[maxNumber3] > a[maxNumber])
{
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber3]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
}
else
{
System.out.println(a[maxNumber3]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
}
}
}
else
{
if(a[maxNumber2] > a[maxNumber3])
{
System.out.println(a[maxNumber3]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
}
else
{
if(a[maxNumber3] > a[maxNumber])
{
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber3]+" "+maxCiShu);
}
else
{
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber3]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
}
}
}
}
in.close();
}
}
package exercise;
import java.util.Scanner;
public class ZhengShuChuXianDeCiShu6 {
public static void main(String args[])
{
int number;
Scanner in = new Scanner(System.in);
number = in.nextInt();
int[] a = new int[number];
int i , j;
for(i = 0 ; i < number ; i++)
a[i] = in.nextInt();
int[] b = new int[number];
for(i = 0 ; i < number ; i++)
{
int CiShu = 1;
for(j = i+1 ; j < number ; j++)
{
if(a[j] == a[i])
CiShu++;
}
b[i] = CiShu;
}
int maxCiShu = b[0];
int maxNumber = 0;
for(i = 1 ; i < number ; i++)
{
if(b[i] > b[0])
{
maxCiShu = b[i];
maxNumber = i;
}
}
int temp = 0;
int temp2 = 0;
int maxNumber2 = 0;
int maxNumber3 = 0;
for(i = maxNumber+1 ; i < number ; i++)
{
if(b[i] == maxCiShu)
{
temp =1;
maxNumber2 = i;
break;
}
}
if(temp == 1)
{
for(i = maxNumber2+1; i < number ; i++)
{
if(b[i] == maxCiShu)
{
temp2 = 1;
maxNumber3 = i;
}
}
}
if(temp == 0)
System.out.println(a[maxNumber]+" "+maxCiShu);
if(temp == 1 && temp2 == 0)
{
if(a[maxNumber] < a[maxNumber2])
{
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
}
else
{
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
}
}
if(temp == 1 && temp2 == 1)
{
if(a[maxNumber2] > a[maxNumber])
{
if(a[maxNumber3] > a[maxNumber2])
{
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber3]+" "+maxCiShu);
}
else
{
if(a[maxNumber3] > a[maxNumber])
{
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber3]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
}
else
{
System.out.println(a[maxNumber3]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
}
}
}
else
{
if(a[maxNumber2] > a[maxNumber3])
{
System.out.println(a[maxNumber3]+" "+maxCiShu);
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
}
else
{
if(a[maxNumber3] > a[maxNumber])
{
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
System.out.println(a[maxNumber3]+" "+maxCiShu);
}
else
{
System.out.println(a[maxNumber2]+" "+maxCiShu);
System.out.println(a[maxNumber3]+" "+maxCiShu);
System.out.println(a[maxNumber]+" "+maxCiShu);
}
}
}
}
in.close();
}
}