首页 > 试题广场 >

众数

[编程题]众数
  • 热度指数:7061 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。

输入描述:
测试数据有多组,每组输入20个1-10之间的数。


输出描述:
对于每组输入,请输出1-10中的众数。
示例1

输入

5 1 5 10 3 5 3 4 8 6 8 3 6 5 10 7 10 2 6 2 

输出

5
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while(scanner.hasNext()) {
			
			Map<Integer , Integer> myMap = new TreeMap<Integer, Integer>();
			
			for(int i = 0;i < 20;i++) {
				int n = scanner.nextInt();
				if (myMap.containsKey(n)) {
					myMap.put(n, myMap.get(n) + 1);
				}else {
					myMap.put(n, 1);
				}
			}
			
			int max = Integer.MIN_VALUE;
			
			for(Map.Entry<Integer , Integer> entry : myMap.entrySet()) {
				max = Math.max(max, entry.getValue());
			}
			
			for(Map.Entry<Integer, Integer> entry : myMap.entrySet()) {
				if (entry.getValue() == max) {
					System.out.println(entry.getKey());
					break;
				}
			}
		}
	}
}

发表于 2024-03-24 20:00:06 回复(0)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<Integer, Integer>  digitMap = new HashMap<Integer, Integer>();
        List<Integer> digitList = new ArrayList<Integer>();
        for (int i = 0; i < 20; i++) {
            int digit = scanner.nextInt();
            if (digitMap.get(digit) == null) {
                digitMap.put(digit, 1);
            } else {
                digitMap.put(digit, digitMap.get(digit) + 1);
            }
        }
        // 排序
        for (Integer key : digitMap.keySet()) {
            if (!digitList.contains(digitMap.get(key))) {
                digitList.add(digitMap.get(key));
            }
        }
        Object[] digitArray = digitList.toArray();
        Arrays.sort(digitArray);
        int max = (int)digitArray[digitList.size() - 1];
        for (Integer key : digitMap.keySet()) {
            if (digitMap.get(key) == max) {
                System.out.println(key);
                break;
            }
        }
    }
}

发表于 2023-03-25 14:13:58 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while ((s = br.readLine()) != null) {
            String[] str = s.split(" ");
            int[] a = new int[11];
            Arrays.fill(a, 0);
            for (int i = 0; i < 20; i++) {
                int k = Integer.parseInt(str[i]);
                a[k]++;
            }
            int maxindex = 1;
            for (int i = 1; i < 11; i++) {
                if (a[i] > a[maxindex]) maxindex = i;
            }
            System.out.println(maxindex);
        }
    }
}


发表于 2021-02-25 12:13:58 回复(0)
Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] record= new int[11];
        while (scanner.hasNext()) record[scanner.nextInt()]++;
        int max = 0;
        int index =0;
        for (int i = 1; i <=10 ; i++) {
            if (record[i]>max){
                index=i;
                max=record[i];
            }
        }
        System.out.println(index);
    }
}


发表于 2020-03-19 22:50:07 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        final int CONSTANT = 20;
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int[] arr = new int[CONSTANT];
            for(int i =0;i<CONSTANT;i++){
                arr[i] = sc.nextInt();
            }
            Map<Integer,Integer> map = new HashMap<>(CONSTANT);
            for(Integer i:arr){
                if(map.containsKey(i)){
                    Integer old = map.get(i);
                    map.put(i,old+1);
                }else{
                    map.put(i,1);
                }
            }
             Arrays.sort(arr);
             Integer maxKey = arr[0];
             Integer maxValue = map.get(maxKey);
            for(Map.Entry<Integer,Integer> entry : map.entrySet()){
                if(maxValue.intValue() < entry.getValue().intValue()){
                    maxKey = entry.getKey();
                    maxValue = entry.getValue();
                }
            }
            System.out.println(maxKey);
        }
    }
}
发表于 2018-08-03 01:01:17 回复(0)

易懂

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int[] data = new int[20];
            for (int i = 0; i < data.length; i++) {
                data[i] = scan.nextInt();
            }
            int[] counter = new int[11];
            for (int i = 0; i < data.length; i++) {
                ++counter[data[i]];
            }
            int max = counter[0];
            int index = 0;
            for (int i = 0; i < counter.length; i++) {
                if (counter[i] > max) {
                    max = counter[i];
                    index = i;
                }
            }
            System.out.println(index);
        }
    }
}
发表于 2018-05-13 15:13:33 回复(0)
 /**  * 众数处理函数  * @param arrayList 多重集S  */ public static void showFun(ArrayList arrayList) {
    Collections.sort(arrayList); //数组排序  int max = 1;//最大次数  Map map = new HashMap(); //存放:当有多个数出现次数相等时的数  for ( int i = 0; i < arrayList.size()-1; i++ ) { int count = 1;  for ( int j = i + 1; j < arrayList.size() && arrayList.get(i) == arrayList.get(j); j++ ) { //如果当前数等于上一个数  count++;  } if ( count > max ) { //当前次数为最大时,更新最大次数 并保存值  max = count;  map.put(arrayList.get(i), count);  } if ( count == max ) { //当前次数==之前的次数时,保存值  map.put(arrayList.get(i), count);  }
    }

    ArrayList arr=new ArrayList(); //存放最大值相同是的key值,也就是数  for ( Object key : map.keySet() ) { //获得key  if ( max == (int) map.get(key) ) { //获得value 如果value==最大次数 则输出  arr.add(key) ;  }
    }
    Collections.sort(arr);//排序 如果存在一样多次数的众数,则输出权值最小的那一个  System.out.println((int)arr.get(0)); }

发表于 2016-10-06 09:13:19 回复(1)