問題描述
某次科研調查時得到了n個自然數,每個數均不超過1500000000(1.5*109)。已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,并按照自然數從小到大的順序輸出統計結果。
輸入格式
輸入包含n+1行:
第1行是整數n,表示自然數的個數。
第2~n+1行每行一個自然數。
輸出格式
輸出包含m行(m為n個自然數中不相同數的個數),按照自然數從小到大的順序輸出。每行輸出兩個整數,分别是自然數和該數出現的次數,其間用一個空格隔開。
樣例輸入
8
2
4
2
4
5
100
2
100
樣例輸出
2 3
4 2
5 1
100 2
資料規模和約定
40%的資料滿足:1<=n<=1000
80%的資料滿足:1<=n<=50000
100%的資料滿足:1<=n<=200000,每個數均不超過1 500 000 000(1.5*109)
import java.util.*;
public class Main2 {
public static long[] arrays;
public static int n, index = 0;
public static int[] sum;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
long tmp;
arrays = new long[n];
sum = new int[n];
for (int i = 0; i < n; i++) {
arrays[i] = sc.nextLong();
}
// 對數字進行排序
Arrays.sort(arrays);
// 計算數字個個數
sum[index++] = 1;
for (int i = 1; i < n; i++) {
if (arrays[i] == arrays[i - 1]) {
sum[index - 1]++;
} else {
sum[index++]++;
}
}
index = 0;
// 列印結果集
for (int i = 0; i < n; i++) {
if (i == 0 || arrays[i] != arrays[i - 1]) {
System.out.println(arrays[i] + " " + sum[index++]);
}
}
}
}