题目描述
给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数。
假设Fmax(Fmax<10000)是数组里最大的数,那么我们只统计{0,1,2…Fmax} 里每个数出现的次数。
输入描述
第一行 n 是数组的大小。1≤n≤10000。
紧接着一行是数组的 nn 个元素。
输出描述
按顺序输出每个数的出现次数,一行一个数。如果没有出现过,则输出 0。
对于例子中的数组,最大的数是 3,因此我们只统计 {0,1,2,3} 的出现频数。
样例输入 1
5
1 1 2 3 1
样例输出 1
0
3
1
1
思路:首先找到数组中的最大值,然后记录当前数字有多少个等变量,具体看代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Arrays;
public class Main {
static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
public static int nextInt() throws IOException{
in.nextToken();
return (int)in.nval;
}
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
int n = nextInt();
int[] num = new int[n];
for(int i=0;i<n;i++)
{
num[i] = nextInt();
}
Arrays.sort(num);
int max = num[n-1];//max 最大的数字
int count = 0;//记录当前数组到哪里了
int countNum = 0;//记录有几个数字
int mark = 0;
int i = 0;
while(mark<=max && i<n)
{
countNum = 0;
for(i=count;i<n;i++)
{
if(num[i]==mark)
{
count++;
countNum++;
}
else
{
break;
}
}
i--;
System.out.println(countNum);
mark++;
}
}
}