当前位置:  开发笔记 > 编程语言 > 正文

在java中获取模式值

如何解决《在java中获取模式值》经验,为你挑选了1个好方法。

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



1> Chadwick..:

完成O(n)而不是O(n ^ 2).需要长度> 0的数组.

public static int getMode(int[] values) {
  HashMap freqs = new HashMap();

  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 entry : freqs.entrySet()) {
    int freq = entry.getValue();
    if (freq > maxFreq) {
      maxFreq = freq;
      mode = entry.getKey();
    }
  }

  return mode;
}


如果计数大于128,则可以使用AtomicInteger而不是Integer值来减少对象分配的数量.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有