在java中获取模式值 [英] Get mode value in java

查看:111
本文介绍了在java中获取模式值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道如何从数组中获取模式值?例如,如果我有一个数字不同的数组,我如何使用Java来搜索哪个数字最多?

Any know how can I get the mode value from an array? For example, if I have a array with difference number, how can I use Java to search out which number is appears the most?

推荐答案

与O(n ^ 2)相反,在O(n)中完成。需要长度> 0的数组。

Completes in O(n) as opposed to O(n^2). Requires arrays of length > 0.

public static int getMode(int[] values) {
  HashMap<Integer,Integer> freqs = new HashMap<Integer,Integer>();

  for (int val : values) {
    Integer freq = freqs.get(val);
    freqs.put(val, (freq == null ? 1 : freq+1));
  }

  int mode = 0;
  int maxFreq = 0;

  for (Map.Entry<Integer,Integer> entry : freqs.entrySet()) {
    int freq = entry.getValue();
    if (freq > maxFreq) {
      maxFreq = freq;
      mode = entry.getKey();
    }
  }

  return mode;
}

这篇关于在java中获取模式值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆