20-算法训练 出现次数最多的整数

http://lx.lanqiao.cn/problem.page?gpid=T222

                        算法训练 出现次数最多的整数

时间限制:1.0s   内存限制:512.0MB

  问题描述
  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数NN? £? 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例

样例输入

5
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);
	}
}

  

原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10421600.html

时间: 2024-10-28 11:33:17

20-算法训练 出现次数最多的整数的相关文章

算法训练 出现次数最多的整数

整数超出int范围了,改成字符型判断才过了. 时间限制:1.0s   内存限制:512.0MB 问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来.如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值. 输入格式:第一行是一个整数N,N? £? 20:接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列. 输出格式:输出只有一行,即出

蓝桥杯算法训练 出现次数最多的整数、

很简单,但有一个坑点,题目说了n是大于0且不超过20的整数: 但它的第六.七组数据n<0 n>20;所以加个判断就能过了: 下面是两种方法: #include<iostream> #include<map> using namespace std; int main() { int n;cin >> n; if(n>0&&n<=20) { map<int,int>p; int m; for(int i=0;i<n

出现次数最多的整数

1 #include<stdio.h> 2 3 int main() 4 { 5 int i,j; 6 int n; //用于记录要输入的整数的个数 7 int a[20]; //用于存储输入的n个整数 8 int max_num_int; //用于记录出现次数最多的整数 9 int max_num; //用于记录 max_num_int 的出现次数 10 11 //输入 12 scanf("%d",&n); //要输入的整数的个数 13 14 if(n>0&

蓝桥杯--求出现次数最多的整数。

#include <iostream>#define Size 20using namespace std;int main(){    int n;int i=0;    int arr[Size]={0};int maxlen=1;int len=1;int loc=0;    cin>>n;    if(n<=0||n>20)    return 0;    for(i=0;i<n;i++){        cin>>arr[i];    }  

出现最多的整数

算法训练 出现次数最多的整数 时间限制:1.0s   内存限制:512.0MB 问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来.如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值. 输入格式:第一行是一个整数N,N? £? 20:接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列. 输出格式:输出只有一行,即出现次数最多的那个

数组-10. 求整数序列中出现次数最多的数

数组-10. 求整数序列中出现次数最多的数(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 本题要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 输入在一行中给出序列中整数个数N(0<N<=1000),以及N个整数.数字间以空格分隔. 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔.题目保证这样的数字是唯一的. 输入样例: 10 3 2 -1 5 3 4 3

数组-10. 求整数序列中出现次数最多的数(15)

本题要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 输入在一行中给出序列中整数个数N(0<N<=1000),以及N个整数.数字间以空格分隔. 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔.题目保证这样的数字是唯一的. 输入样例: 10 3 2 -1 5 3 4 3 0 3 2 输出样例: 3 4 #include <stdio.h> #define N 1000 int comp(const void *p, const void *

7-6 求整数序列中出现次数最多的数 (15 分)

7-6 求整数序列中出现次数最多的数 (15 分) 本题要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数.数字间以空格分隔. 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔.题目保证这样的数字是唯一的. 输入样例: 10 3 2 -1 5 3 4 3 0 3 2 输出样例: 3 4 s = input().split()[1:] count_max = 0 for i in set(s

蓝桥杯算法训练&lt;一&gt;

一.图形显示[此题虽然简单,但是需啊哟注意的是,每个“*”后边有一个空格] 问题描述 编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * * * * * * * * 1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner mScanner = new Scanner(System.