疫情当前,大家要做好防护哦。
带好口罩了嘛?
每日一练,锻炼思维
/**
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
编写一个程序,计算递增数组的众数。程序第一行输入n(1≤n≤20),表示数组的长度;第二行输入数组中各个元素的值。输出数组中出现次数最多的元素。如果有两个元素出现的次数相同,即并列第一,那么只输出较小的那个元素。(注:输入的数组是递增数组,已经排好序,程序中不需要进行排序)样例输入
6
100 150 150 200 200 250
样例输出
150
*/
/*我的思路 * 1.先创建一个数组,存储输入的值 * 2.初始化输入器和数组 * 3.for循环储存输入的值 * 4.使用Map统计每一个值出现的次数,key为值,value是出现的次数 * ------------------- * 5.将出现最多的数字输出(value最大),确保key还是较小的... * */ import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class ALGO_485_计算众数 { //1.先创建一个数组,存储输入的值 private static Integer[] arr; private static Scanner src; public static void main(String[] args) { //初始化输入器和数组 src = new Scanner(System.in); int n = src.nextInt(); arr = new Integer[n]; //for循环储存输入的值 for (int i = 0; i < arr.length; i++) { arr[i] = src.nextInt(); } //使用Map统计每一个值出现的次数,key为值,value是出现的次数 Map<Integer,Integer> map=new HashMap<Integer, Integer>(); for(int j = 0 ; j< arr.length; j++){ int key = arr[j]; Integer value =map.get(key); //数字第一次出现 if(value == null){ map.put(key, 1); }else{ //数字出现过了就给value+1 ++value; map.put(key, value); } } //测试代码:是否存进去 //System.out.println(map); //输出value所对应的key int maxValue = 0; int maxKey = 0; for(Integer s:map.keySet()){ int value=map.get(s); if(value>maxValue){ maxValue = value; maxKey = s; } } System.out.println(maxKey); } }
结果: