`

从n个整数中查找出现频率最高的所有整数

    博客分类:
  • Java
阅读更多
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;

/**
 * 从n个整数中查找出现频率最高的所有整数(用java实现) 
 * 示例:5,5,8,5,3,5,3,3,3,1 
 * 中出现频率最高的整数是3和5
 * @author htcafe
 *
 */
public class MyAnswer {

    public static void main(String[] args) {
        
        long start = System.currentTimeMillis();
        
        int[] datas = getdata();
//        int[] datas = {1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3};
        Map<Integer, Integer> map = getMax(datas);
        int count = getCount(map.values());
        System.err.println(count);
        
        display(map, count);
        
        long end = System.currentTimeMillis();
        System.err.println("Complete the check in " + (end - start) + " ms!" +
                "\nThis test have " + datas.length + " datas!");
    }
    
    private static void display(Map<Integer, Integer> map, int count) {
        for(Iterator<Integer> it = map.keySet().iterator(); it.hasNext();) {
            int value = it.next();
            if(count == map.get(value))
                System.out.println(value);
        }
    }
    
    private static int getCount(Collection<Integer> set) {
        int temp = 0;
        for(Iterator<Integer> it = set.iterator(); it.hasNext();) {
            int value = it.next();
            if(value > temp)
                temp = value;
        }
        return temp;
    }
    
    private static Map<Integer, Integer> getMax(int[] datas) {
        Map<Integer, Integer> temp = new HashMap<Integer, Integer>();
        for(int i=0; i<datas.length; i++) {
            Integer t = temp.get(datas[i]);
            t = (t != null) ? t.intValue() : 0;
            temp.put(datas[i], t + 1);
        }
        return temp;
    }

    private static int[] getdata() {
        int NUMBER = 1000000;
        int[] arr = new int[NUMBER];
        Random ran = new Random(20090228);
        int sign = -1;
        for (int i = 0; i < NUMBER; i++) {
            sign *= -1;
            arr[i] = sign * ran.nextInt(NUMBER);
        }
        return arr;
    }
}
 
分享到:
评论

相关推荐

    从n个整数中查找出现频率最高的所有整数(用java实现)

    另一个则是利用哈希表(`HashMap`)来统计每个整数出现的频率,进而找出出现频率最高的整数。 ### 第一部分:排序与遍历方法 #### 代码解析: 在第一部分的代码中,首先定义了一个方法 `getdata()` 来随机生成一个...

    PLL频率综合器中整数和小数分频器设计与实现.zip_PLL divider_分频器_小数分频

    总的来说,PLL频率综合器中整数和小数分频器的设计与实现是一项关键技术,它直接影响到PLL的性能和应用范围。理解并掌握这两种分频器的工作原理和设计方法,对于提高系统频率合成的灵活性和精度具有重要意义。

    C语言 统计数字的出现频率,并将出现频率最高的前100个数字按照降序排列后写入到文件中

    4. **遍历和计数**:遍历读取的所有数字,每次遇到一个数字,就在哈希表中查找并更新其计数。如果不存在,则创建一个新的条目。 5. **排序**:遍历结束后,需要对哈希表中的项进行排序。由于C语言标准库没有内置的...

    verilog写的奇偶分频器、半整数分频器和DDS的任意分频器

    在这个压缩包中,包含的Verilog代码可能涉及了三种不同类型的分频器:奇偶分频器、半整数分频器以及基于直接数字频率合成(DDS)的任意分频器。这些分频器在FPGA(现场可编程门阵列)开发中广泛使用,因为它们能够...

    基于CPLD-FPGA的半整数分频器的设计.rar_integer dividers _分频器_半整数_半整数分频_半整数分频

    例如,在通信系统中,半整数分频器可以用来生成各种子载波频率,或者在数字锁相环(DLL)和数字相位锁环(DPLL)中作为核心组件。 CPLD和FPGA是现代数字系统设计中常用的可编程逻辑器件。CPLD通常拥有较低的门数和...

    信息学奥赛一本通-教程PPT课件(第五版)算法部分 第二章 数据排序.pdf

    解决众数问题可以使用哈希表(Hash Table)统计每个元素出现的频率,然后找出频率最高的元素。 4. 第k小整数问题:这个算法问题属于选择排序的范畴,关键在于找出一组数中第k小的数。在信息学奥赛中,常用的方法是...

    北邮2009复试上机题目

    首先,读取两个整数,N表示字符数量,接下来的一行是N个整数,表示各个字符出现的频率。构建哈夫曼树的过程是通过合并频率最小的两个节点来重复进行,直到只剩下一个节点为止。每个内部节点代表一个字符,叶子节点...

    大厂算法面试题库中高频出现的30道典型题.pdf

    这些算法题目不仅在面试中出现频率高,而且对于编程能力的提升有着极其重要的作用。掌握这些知识点,对于准备算法面试的求职者来说至关重要。通过练习这些高频题,可以有效提升解决实际问题的能力,并在面试中给面试...

    链表实现从文件中读取和统计单词

    本文将详细介绍如何使用链表从文件中读取数据,并统计文件中每个单词出现的频率。本程序的核心在于利用链表来存储单词及其出现次数,通过遍历链表完成对单词的查找与更新操作。 #### 核心概念解析 1. **链表**: 是...

    分治法求众数.doc

    在这个过程中,我们可以统计基准值出现的次数,并比较左右两部分中基准值出现的频率,从而确定众数可能存在的区域。 具体实现上,可以创建一个名为`Solution`的类,包含两个变量`res`和`resc`来保存当前找到的最大...

    python-leetcode面试题解之第347题前K个高频元素.zip

    题目要求我们找出一个整数数组中出现频率最高的前K个元素。这个问题涉及到的主要知识点有: 1. **字典(Dictionary)**:Python的字典数据结构是解决此问题的关键。字典可以用于存储元素及其对应的频率,它提供O(1)...

    十道海量数据处理面试题与十个方法大总结

    接着,对每个小文件使用哈希表统计每个IP地址出现的频率,并找出每个文件中出现频率最高的IP及其频率。最后,在这些最高频率的IP地址中再次筛选出出现频率最高的IP。 **2. 统计最热门的10个查询串** **问题描述**...

    (Java语言实现编写的程序)功能为:随机产生数并统计频率

    在统计完所有随机数后,我们可以遍历`frequencyMap`,输出每个随机数及其出现的频率: ```java for (Map.Entry, Integer&gt; entry : frequencyMap.entrySet()) { System.out.println("Number: " + entry.getKey() + ...

    华中科技大学算法设计与分析实验代码-大数乘法+最近点对问题+最优二分查找树+所有点的最短路径

    最优二分查找树是一种自平衡的二叉查找树,它在进行查找操作时具有平均时间复杂度为O(log n)的同时,还能保证查找频率较高的关键字具有较低的查找深度。`optimal_tree.cpp`可能涉及构建和操作这种数据结构,可能...

    c + + 哈希表实现数字排序

    程序的目标是处理多组测试数据,每组数据包括两个整数n和m,以及n个在[-500000, 500000]区间内的整数。使用哈希表可以高效地统计和排序这些整数。 首先,我们看到程序声明了一个大小为1000000的整数数组a,这实际上...

    大数据面试题(2).docx

    4. 最频繁IP查找:在海量日志数据中,若要找出访问百度次数最多的IP,可以对IP进行哈希映射,将大文件分为多个小文件,统计每个小文件内IP的频率,找到频率最高的IP,最后在这些高频IP中确定最高频的那个。...

    48. 第一个只出现一次的字符1

    在这个问题中,我们创建了一个`map, int&gt;`类型的哈希表`m`,其中键是字符`char`,值是整数`int`,表示对应字符在字符串中出现的次数。遍历字符串`str`,对于每个字符,我们将其添加到哈希表`m`中并递增其计数。遍历...

    计算顺序数列某一数字出现的个数

    在Python中,我们可以使用range函数来生成这个数列,例如`range(0, n+1)`将生成包含0到n的所有整数的序列。在其他语言中,如Java,可以创建一个长度为n+1的数组,并用0到n填充。 接下来,我们需要遍历这个数列,...

    哈夫曼码的编译码系统;递归替换问题;跳马问题;长整数运算问题;数据结构课程设计课程设计.pdf

    本课程设计涉及四个主要主题:哈夫曼编码、递归替换问题、跳马问题和长整数运算,这些都是在实际编程和算法设计中经常遇到的问题。 一、哈夫曼码的编/译码系统 哈夫曼编码是一种有效的前缀编码方法,用于无损数据...

    任意波形发生器ROM 查找表的设计

    典型的DDS系统主要包括以下几个部分:系统时钟、频率预置与调节电路(频率累加器)、相位累加器、ROM查找表等。最终通过D/A转换器和滤波器完成波形输出。 - **系统时钟**:提供整个DDS系统的工作基准时钟。 - **...

Global site tag (gtag.js) - Google Analytics