编写一个静态方法 histogram(),接收一个整形数组a[],和一个整数M为参数,并返回一个大小为M的数组.其中第i个元素的值为整数i在参数数组中出现的次数,如果a[] 中的值均在 0 - M-1
编写一个静态方法 histogram(),接收一个整形数组a[],和一个整数M为参数,并返回一个大小为M的数组.其中第i个元素的值为整数i在参数数组中出现的次数,如果a[] 中的值均在 0 - M-1之间 ,返回的数组中所有元素之和应该和a.length相等
相关代码如下:有详细注释,应该能看懂
/**
* 编写一个静态方法 histogram(),接收一个整形数组a[],和一个整数M为参数,并返回一个大小为M的数组.
* 其中第i个元素的值为整数i在参数数组中出现的次数,
* 如果a[] 中的值均在 0 - M-1之间 ,返回的数组中所有元素之和应该和a.length相等
*/
public static int[] histogram(int[] a,int M)
{
//返回数组b,大小为M
int[] b = new int[M];
//m保存数组b中元素和
int m = 0;
//n 表示整数i在参数数组中出现的次数
int n = 0;
//外层循环来遍历数组b,并将结果n赋值给b[i],内层循环来遍历数组a,用于比较i在数组a中出现次数并且用n记录
for(int i = 0; i < M; i++)
{
for(int j = 0; j < a.length; j++)
{
//判断i出现在数组a[]中的次数,用n记录
if (i == a[j])
{
n++;
}
//计算出i出现次数后放新数组b中并且也是在i位置上
b[i] = n;
}
}
//计算数组b元素和
for(int i = 0; i < M; i++)
{
m = m + b[i];
}
return b;
}