【java】整数出现次数

问题描述】

输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。

【输入形式】

先从标准输入读入整数的个数(大于等于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();
	}
}