统计int数组中重复数字的个数
2016-09-06 22:30
239 查看
本小白刚接触java,趁着复习笔试,总结了下如何统计数组中重复数字的个数,大家一起学习~
方法一,用HashMap。这种方法简单明了,易于操作和理解。
添加方法三,用Collections.frequency()实现
方法一,用HashMap。这种方法简单明了,易于操作和理解。
private static void countSameNumber1(int[] number){ HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>(); for(int i =0;i < number.length;i++){ if(!hm.containsKey(number[i])){ hm.put(number[i],1); } else{ hm.put(number[i],(hm.get(number[i]))+1); } } for(Map.Entry<Integer,Integer> entry:hm.entrySet()){ System.out.println(entry.getKey() + "出现了" + entry.getValue() + "次"); } }方法二,用一个数组去存储重复的个数,数组下标即为需要统计的数字。
private static void countSameNumber2(int[] number){ Arrays.sort(number); //若数组内为1 2 3 4 1 2 ,则创建一个大小为5的数组,下标为0-4. int[] numbers = new int[number[number.length -1] + 1]; for(int i =0;i< numbers.length;i++){ numbers[i] = 0; } //i即为原数组中数字,numbers[i]存放重复的次数 for(int i =0; i<number.length;i++){ int temp = number[i]; numbers[temp]++; } //打印 for(int i =0;i < numbers.length;i++){ if(numbers[i] == 0){ continue; } System.out.println(i + "出现了" + numbers[i] + "次"); } }
添加方法三,用Collections.frequency()实现
private static void countSameNumber3(int[] number){ ArrayList<Integer> al = new ArrayList<Integer>(); ArrayList<Integer> all = new ArrayList<Integer>(); for(int i =0;i<number.length;i++){ if(!al.contains(number[i])){ al.add(number[i]); } } for(int i=0;i<number.length;i++){ all.add(number[i]); } for(int i=0;i<al.size();i++){ int result = Collections.frequency(all,al.get(i)); System.out.println(al.get(i) + "出现了" + result + "次"); } }
相关文章推荐
- 一个数组arr,长度为N,N小于10^8,里面数字的范围是1~N,是否有重复,并统计出来
- C#练习——统计整型数组中不重复数字的个数、将普通日期格式转换成汉字日期格式、在控制台录入每个学生的姓名,当用户输入quit(不区分大小写)时,程序停止接受用户的输入,并且显示出用户输入的学生的个数
- C学习笔记 控制数组的有效长度并统计数组中重复数字。
- java 一个int数组 长度为100 随机生成100个数 即1-100 将其插入进数组 插入的数字不能重复
- 乱序查找int数组中重复的数字
- 讲两个int 数组找出重复的数字 用最少的循环
- php实现数组重复数字统计实例
- java 两个int数组删除重复的数字,并返回删除后的数组
- 已知一个数组int[98],该数组里面存储了0~99共100个数字中的98个,数字不重复,请用算法算出0~99中缺少的2个数字是哪两个?
- java 一个int数组 长度为100 随机生成100个数 即1-100 将其插入进数组 插入的数字不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。自己写的算法
- 计数排序——有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
- 不用字符串数组将一整数转换为各个数字组成的int[]数组
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 去除数组中的重复数字
- 去除数组中的重复数字
- C#中怎样随机输出从0到100的数字且不重复(不用数组)
- JAVA去掉一个已排序数组的重复数字
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型: