查找数组的模式

Kri*_*her 1 java mode

好的,我再次陷入困境,这就是我所拥有的

public static int mode(int[][] arr) {
    List<Integer> list = new ArrayList<Integer>();
    List<Integer> Mode = new ArrayList<Integer>();
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            list.add(arr[i][j]); 
        }
    }
    for(int i = 0; i < list.size(); i ++) {
        Mode.add((Mode.indexOf(i)+1));
    }
    System.out.println(Mode);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是为了找到这个数组的数学模式,我打算做的是对于我在数组中遇到的每个数字,将相应的索引增加1,最终得到一个带有"tally"标记的新数组相应的索引,我不确定正在以正确的方式进行此操作我需要一个动态数组我假设为了达到任何可能遇到的数字,这样可以增长到我需要的任何大小,如果我的代码完整乱搞随意批评:)

Mic*_*ael 5

您是否考虑使用地图而不是列表?这样你就可以消除丑陋的indexOf调用,只是通过它们的值来引用元素的每个实例,而不是每次都进行线性搜索.然后,您所要做的就是找到地图中值最高的键.

  • 是的,`HashMap <Integer,Integer>`."键"将是您在数组中遇到的数字,"值"将是该数字出现频率的计数. (2认同)