计算数组中各类型的数有几种,分别是什么
2016-08-24 08:56
344 查看
如题,对于一个数组 int [] arr={10,12,12,2,2};,含有10 12 2 三种数,每种数的个数分别为1,2,2
输出的结果为10 出现过1次 12出现过两次 2出现过两次
想法:利用键值对存储,键是数组中不重复的值
值是那些数字出现的次数
遍历这个数组,对数组的每一个数都判断这个数字之前出现过没有。若没出现过,加入键数组,并且值加1.若出现过,遍历键数组
判断在哪出现过,并且将其值加1
public class Count{
public static void main(String [] args)
{
int [] arr={10,12,12,2,2};
int count=0; //记录出现的类型总数
int[] jian=new int [arr.length];
int[] zhi=new int[arr.length];
int i=0;int j=0; //记录键值的递增
for(int a=0;a<arr.length;a++)
{
if(b(arr,arr[a],a)) //判断从0-a是否出现过,没出现过加入键值对
{
count++;
jian[i++]=arr[a];
zhi[j++]++;
}
else //出现过判断是哪一个键值对
{
int temp=nayi(jian,arr[a]);
if(temp==-1)
{
System.out.println("出错啦"+arr[a]+"%%"+a);
}
else
zhi[temp]++;
}
}
System.out.println("出现过"+count+"种类型,分别是");
for(int u=0;u<=i-1;u++) //-1因为i有自增操作比长度大一
{
System.out.println(jian[u]+"出现过"+zhi[u]+"次");
}
}
public static boolean b(int arr[],int n,int m){ //判断以前n出现过没有 m下标
for(int a=0;a<m;a++)
{
if(n==arr[a])
return false;
}
return true;
}
public static int nayi(int jian[],int n)//判断出现过的n在哪个键值对出现
{
for(int a=0;a<jian.length;a++)
{
if(n==jian[a])
return a;
}
return -1;
}
}
输出的结果为10 出现过1次 12出现过两次 2出现过两次
想法:利用键值对存储,键是数组中不重复的值
值是那些数字出现的次数
遍历这个数组,对数组的每一个数都判断这个数字之前出现过没有。若没出现过,加入键数组,并且值加1.若出现过,遍历键数组
判断在哪出现过,并且将其值加1
public class Count{
public static void main(String [] args)
{
int [] arr={10,12,12,2,2};
int count=0; //记录出现的类型总数
int[] jian=new int [arr.length];
int[] zhi=new int[arr.length];
int i=0;int j=0; //记录键值的递增
for(int a=0;a<arr.length;a++)
{
if(b(arr,arr[a],a)) //判断从0-a是否出现过,没出现过加入键值对
{
count++;
jian[i++]=arr[a];
zhi[j++]++;
}
else //出现过判断是哪一个键值对
{
int temp=nayi(jian,arr[a]);
if(temp==-1)
{
System.out.println("出错啦"+arr[a]+"%%"+a);
}
else
zhi[temp]++;
}
}
System.out.println("出现过"+count+"种类型,分别是");
for(int u=0;u<=i-1;u++) //-1因为i有自增操作比长度大一
{
System.out.println(jian[u]+"出现过"+zhi[u]+"次");
}
}
public static boolean b(int arr[],int n,int m){ //判断以前n出现过没有 m下标
for(int a=0;a<m;a++)
{
if(n==arr[a])
return false;
}
return true;
}
public static int nayi(int jian[],int n)//判断出现过的n在哪个键值对出现
{
for(int a=0;a<jian.length;a++)
{
if(n==jian[a])
return a;
}
return -1;
}
}
相关文章推荐
- 连接池有那几种 分别有什么区别
- Android注册广播有几种方式,分别是什么?
- 主键的生成方式有几种?分别是什么?
- java中,异常处理的机制有哪几种,分别是什么?(比较详细)
- JavaScript对一个数组 进行filter、some、map、foreach的操作分别有什么作用?
- 企业管理系统有几种类型,分别是什么?
- 黑马程序员---在HTML文档中引用CSS有几种方式?请指出它们分别是什么?
- 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。 程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。 请使用3个数组处理函数来分别进行输入、显示和计算
- 类中包含几种成员,分别是什么?
- [易飞]易飞ERP系统中,最低补量、补货位量、最小用量、领用倍量、批量之间分别代表什么意思,其中的公式计算逻辑是什么?
- PO、VO、DAO、BO、POJO分别是什么?(JAVA几种对象的解释)
- 序列化和反序列化有几种方式?分别是什么?
- 编写重载函数min(),分别计算int、double、float、long类型数组中的最小树
- 数据存储有几种方式?分别是什么?
- Activity的启动模式有哪几种,分别用于什么场景?
- 继承有几种方式,分别是什么,想要实现继承可以使用哪些方法
- Apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用的工作模式?
- 编写重载函数min(),分别计算int,double,float,long类型数组中的最小数
- 在一个长度为10的整型数组里面,保存了班级10个学生的考试成绩。要求编写5个函数,分别实现计算考试的总分,最高分,最低分,平均分和考试成绩降序排序
- apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?