20-算法训练 出现次数最多的整数
Posted zhumengdexiaobai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20-算法训练 出现次数最多的整数相关的知识,希望对你有一定的参考价值。
算法训练 出现次数最多的整数
时间限制:1.0s 内存限制:512.0MB
问题描述
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
输入格式:第一行是一个整数N,N? £? 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
输入格式:第一行是一个整数N,N? £? 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
100
150
150
200
250
样例输出
150
注意:题目有一组恶心且垃圾的数据!!!
import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin = new Scanner(System.in); int[] butong = new int[30]; int[] cishu = new int[30]; int n; n = cin.nextInt(); if(n <= 0) { //坑!!!!!!!!!!!!!智障吧,整数的个数还可能小于0!!!! return ; } int bt = 0, x; // HashMap<int, int> map = new HashMap<int, int>(); HashMap<Integer, Integer> map = new HashMap<>(); for(int i = 0; i < n; i++) { x = cin.nextInt(); if(map.containsKey(x)) { map.put(x, map.get(x)+1); } else { map.put(x,1); butong[bt++] = x; } } int mx = -1; int mm = -0x3f3f3f3f; for(int i = 0; i < bt; i++) { int cii = map.get(butong[i]); if( cii > mx) { mx = cii; mm = butong[i]; } if(cii == mx) { if(mm > butong[i]) { mm = butong[i]; } } } System.out.println(mm); } }
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); if(n <= 0) { //坑!!!!!!!!!!!!!智障吧,整数的个数还可能小于0!!!! return ; } long x, cnt = 0, min = -0x3f3f3f3f; long bf = -0x3f3f3f3f; long dangci = 0; for(int i = 0; i < n; i++) { x = cin.nextLong(); if(x == bf) { dangci++; } else { if(cnt < dangci) { cnt = dangci; min = bf; } else if(cnt == dangci && min > bf) { cnt = dangci; min = bf; } bf = x; dangci = 1; } } if(cnt < dangci) { cnt = dangci; min = bf; } else if(cnt == dangci && min > bf) { cnt = dangci; min = bf; } System.out.println(min); } }
以上是关于20-算法训练 出现次数最多的整数的主要内容,如果未能解决你的问题,请参考以下文章
面试被虐如何只用2GB内存从20亿,40亿,80亿个整数中找到出现次数最多的数?
面试被虐如何只用2GB内存从20亿,40亿,80亿个整数中找到出现次数最多的数?