JavaStudy——0011:数字统计

总时间限制: 1000ms 内存限制: 100000kB

描述
输入n个整数,统计每个数出现的次数.

输入
第一行是一个整数n(1<=n<=1000),接下来n行每行一个整数.
输出
第一行输出总共有多少个不同的整数.
接下来每行输出一个整数及这个整数出现的次数,用空格分隔.
输出的整数的顺序与它们在输入中第一次出现的顺序一致(即在输入中先出现的数,也会在输出中先出现)

样例输入

5
2
3
2
1
2

样例输出

3
2 3
3 1
1 1

Accepted代码

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int[] arr=new int[10];
        int[] xu=new int[10];
        int ans=0,j=1;
        for (int i=1;i<=n;i++) {
            int temp=in.nextInt();
            arr[temp]++;
            xu[j]=temp;
            int t=1;
            for (int k=1;k<j;k++) {
                if(xu[k]==temp)
                    t=0;
           }
           if(t!=0) {
               j++;xu[j]=temp;
           }
       }
       for(int i=0;i<10;i++) {
           if(arr[i]!=0)
               ans++;
       }
        System.out.println(ans);
        for(int i=1;i<=ans;i++) {
            if(arr[xu[i]]!=0) {
                System.out.print(xu[i]+" "+arr[xu[i]]);
                System.out.println();
            }
        }
        in.close();
    }
}

另:使用LinkedHashMap

import java.util.*;
public class Main {
    static LinkedHashMap<Integer,Integer> m=new LinkedHashMap<Integer,Integer>();
    static void f(int key) {
        if(m.containsKey(key))
            m.put(key,m.get(key)+1);
        else 
            m.put(key,1);
    }
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        for(int i=0;i<n;i++) {
            f(in.nextInt());
        }
        System.out.println(m.size());
        Set<Integer> keyset=m.keySet();
        for(Integer key:keyset) {
            System.out.println(key+" "+m.get(key));
        }
        in.close();
    }
}

你可能感兴趣的:(OpenJudge,-,javastudy)