【蓝桥杯练习题】出现次数最多的整数
2015-10-26 18:40
351 查看
问题描述
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150
代码实现
import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; public class 统计出现最多次数的数 { //该函数完成统计功能并输出出现次数最多的数 private static void countNum(Integer[] arr){ //用来统计每个数的出现次数,Map的Key表示数,Value表示出现的次数 Map<Integer,Integer> numMap = new HashMap<Integer,Integer>(); for(int i=0; i<arr.length; ++i){ if(numMap.containsKey(arr[i])){ //如果该数已经在出现过,则将该数的次数加一 numMap.put(arr[i], numMap.get(arr[i])+1); }else{ //若没有出现则加入Map中,次数置为一 numMap.put(arr[i], 1); } } //接下来按照Map的Value值进行降序排列,但由于对Map的排序操作不方便, //故将Map的数据转换为对应的字符串,然后对字符串进行排序 String[] numStr = new String[numMap.size()]; int i = 0; for(Entry<Integer,Integer> entry : numMap.entrySet()){ //字符串格式: 次数,数字 numStr[i++] = entry.getValue()+","+entry.getKey(); } sortStr(numStr);//对数据字符串进行排序 //数组首元素即为要求输出的数字 System.out.println(numStr[0].split(",")[1]); } //依赖两种比较条件的排序 private static void sortStr(String[] numStr){ for(int i=0; i<numStr.length; ++i){ //将字符串以“,”为分隔符分割,对分割后的第一部分即次数为主序使用冒泡法进行排序 String[] str1 = numStr[i].split(","); for(int j=0; j<i; ++j){ String[] str2 = numStr[j].split(","); if(str1[0].compareTo(str2[0]) > 0){ String temp1 = numStr[i]; numStr[i] = numStr[j]; numStr[j] = temp1; }else if(str1[0].compareTo(str2[0]) == 0){ //若不同的数字出现次数相同,则按照数字的大小进行升序排列,目的为了将出现次数 //最多的中的最小的数放在数组首位 if(str1[1].compareTo(str2[1]) < 0){ String temp2 = numStr[i]; numStr[i] = numStr[j]; numStr[j] = temp2; } } } } } public static void main(String args[]){ Scanner scan = new Scanner(System.in); int n = scan.nextInt();//表示要输入数据的个数 Integer[] arr = new Integer ; for(int i=0; i<n; ++i){ arr[i] = scan.nextInt(); } countNum(arr);//该函数完成统计功能并输出出现次数最多的数 } }
运行结果
相关文章推荐
- 海量数据挖掘MMDS week5: 计算广告Computational Advertising
- AES在Android、JAVA端正常加密解密
- Memcached有个stats命令
- 海量数据挖掘MMDS week5: 计算广告Computational Advertising
- 为什么要在JAVA,C++等集合中引入迭代器
- Conclusion SIFT描述子提取步骤
- JDBC关于时间的存取
- ffmpeg 转换其他格式到YUV420P
- 特征选择方法之信息增益
- Linux进程间通信——使用共享内存
- heroku toolbelt下载地址
- 2.1.6 用ProtectX实现扫描的反击与追踪
- ubuntu 系统 更改屏幕亮度为最大(15级亮度)
- 从JAVA转学习Go——Go在eclipse的环境搭建
- Unity游戏开发使用Assetbundle加载场景实战
- STL finish 集合交、差、并、补运算
- n-gram 模型
- Hive启动报错:Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: java.io.
- libjpeg移植及压缩解压bmp的例子
- Leetcode -- Surrounded Regions