`

从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实现)

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

    Technical_Interview_Q-s:问题解答

    找出数组中出现频率最高的整数 在整数数组中查找总和等于 10 的对(奖励:在线性时间内完成) 给定 2 个整数数组,确定第二个数组是第一个数组的旋转版本。 Ex. Original Array A={1,2,3,5,6,7,8} Rotated Array B...

    delphi 开发经验技巧宝典源码

    0086 用回溯法找出n个自然数中取r个数的所有组合 58 0087 0~N位数的任意组合 59 0088 在数组中快速查找近似值 60 0089 实现直接插入法排序 61 第4章 函数应用 63 4.1 字符串处理函数 64 0090 使用...

    源_关键字统计_词频统计_哈希统计_MOD_

    1)针对输入的英文文本文件,设计一个哈希表...2)读入给定的英文文本文件,统计文件中所有单词出现的频率并输出;3)查找某个给定的单词:如果单词存在于文本中,输出该单词在文本中出现的频数;否则,提示该单词不存在;

    字符串整数的余数leetcode-google-interview-questions:谷歌面试问题

    并从下一个索引重复上述算法。 重新排列字符串,相同的字符出现至少 d 距离。 技巧:按频率排序(use heap, have to remain sorted at all times) 。 保留一组中的最后d字符。 始终打印不在集合中的最常用字符。 合并...

    霍夫曼编码,对输入的字符集和各个字符对应的权值求出每个字符的霍夫曼编码。

    1、将最小两个子树合并过程中一定要从前向后去查找两个最小子树,最小子树作为新结点的左子树,次小子树作为新结点的右子树,编码过程中左子树定义为0,右子树定义为1 2、另外:一般原则要求:  若有重复权值结点...

    java源码包2

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    数据结构(C++)有关练习题

    3、从终端读入字符集大小为n(即字符的个数),逐一输入n个字符和相应的n个权值(即字符出现的频度),建立哈夫曼树,进行编码并且输出。 注:可用C或C++编写。 4、用邻接矩阵或邻接图实现一个有向图的...

    API之网络函数---整理网络函数及功能

    GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表 GetPrivateProfileString 为初始化文件中指定的条目取得字串 GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值 ...

    网格最短leetcodePython-PythonPracticeExercises:我对Python练习的解决方案

    数字老鼠leetcode Python Python实践练习 我对 Python 练习的解决方案 力码 数组: 二和 帕斯卡三角形 帕斯卡三角形 ...频率查询(中) 排序: 排序:冒泡排序(简单) 马克和玩具(简单) 排序:比较器

    june-10-2015

    设计一种方法来查找书中任何给定单词的出现频率。 问题 3 - 方阵 假设您有一个方阵,其中每个单元格都填充黑色或白色。 设计一个算法来找到最大子正方形,使得所有四个边框都填充黑色像素。 问题 4 - 完美平方 用...

    大更新【CHENI纯组件列表框1.6】修复重大BUG,新增绑定整数型数组-易语言

    6、调整:列表_返回顶部 的参数从速度修改为耗时 更直观的表现速度【默认为1(小数型 单位秒)】 tip:通过简单计算当前表项数量和一个常量值可得到固定速度噢~ 例如:0.1 × 图文列表框_多列.获取_表项数量 () ÷ ...

    Excel公式与函数大辞典.宋翔(带书签高清文字版).pdf

    本书从函数功能、函数格式、参数说明、注意事项、Excel 版本提醒、案例应用、交叉参考7 个方面,全面、细致地介绍了Excel 2016/2013/2010/2007/2003 中公式和函数的使用方法、实际应用和操作技巧。最后3 章还将公式...

    Linux高级bash编程

    在目录的所有文件中查找源字串 10-10. 列出目录中所有的符号连接文件 10-11. 将目录中的符号连接文件名保存到一个文件中 10-12. 一个C风格的for循环 10-13. 在batch mode中使用efax 10-14. 简单的while循环 10-15. ...

    Advanced Bash-Scripting Guide <>

    在目录的所有文件中查找源字串 10-10. 列出目录中所有的符号连接文件 10-11. 将目录中的符号连接文件名保存到一个文件中 10-12. 一个C 风格的for 循环 10-13. 在batch mode 中使用efax 10-14. 简单的while 循环 10-...

    leetcode530-LeetcodeSolution:Leetcode的解决方案

    查找数组中的所有重复项104.二叉树的最大深度371. 两个整数的和389. 找不同462. 最小移动到相等数组元素 II 258.加数字226. 反转二叉树451. 按频率排序字符260.单数III 492.构造矩形506.相对等级283. 移零530. BST ...

    《Excel应用大全》示例文件 光盘文件

    • 计算比赛评分表中频率最高的分值 • 利用极值函数限定销售价格 • 取得不重复的第2 个最低报价 • 统计各科成绩大于等于平均分的总平均分 • 计算体操比赛的选手得分 • 统计年度培训完成情况表 • 在筛选条件下...

    java贪吃蛇源码-Interview-Stuff:面试问题、答案、Java、Python、数据库、Web、Javascript

    捕集雨水勾股三重巧克力分布问题股票买卖左侧较小右侧较大的元素将数组转换为Zig-Zag方式查找已排序数组中出现一次的元素流中第K大的元素相对排序螺旋遍历矩阵的元素排序由频率最大数组成的数组 由 0 和 1 组成的...

Global site tag (gtag.js) - Google Analytics