总时间限制:
1000ms
内存限制:
100000kB
描述
输入n个整数,统计每个数出现的次数.
输入
第一行是一个整数n(1<=n<=1000),接下来n行每行一个整数.
输出
第一行输出总共有多少个不同的整数.
接下来每行输出一个整数及这个整数出现的次数,用空格分隔.
输出的整数的顺序与它们在输入中第一次出现的顺序一致(即在输入中先出现的数,也会在输出中先出现)
样例输入
5
2
3
2
1
2
样例输出
3
2 3
3 1
1 1
方法一:基础实现代码
此题略坑,想复杂了
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]+" ");
System.out.println(arr[xu[i]]);
}
}
}
}
方法二LinkedHashMap实现代码:
/*同过LinkedHashMap实现*/
import java.util.Scanner;
import java.util.Set;
import java.util.LinkedHashMap;
public class Main{
static LinkedHashMap<Integer,Integer>map1=new LinkedHashMap<Integer,Integer>();
static void calcute(int n) {
if(map1.containsKey(n)) {
map1.put(n,map1.get(n)+1);
}
else
{
map1.put(n, 1);
}
}
public static void main(String[]args) {
Scanner in=new Scanner (System.in);
int n=in.nextInt();
for(int i=1;i<=n;i++)
{
calcute(in.nextInt());
}
Set<Integer>keyset=map1.keySet();///返回该集合中的 的所有key对象形成的keyset()集合
System.out.println(map1.size());
for(Integer key:map1.keySet()) {
System.out.println(key+" "+map1.get(key));
}
}
}