确定数组中最常见的值

时间:2014-09-10 02:13:37

标签: java arrays

假设我有一组10个随机生成的数字。然后这些数字进入列表。如:

int[] fams = new int[4];

System.out.println("Number of families with 2 children: " + fams[0]);

System.out.println("Number of families with 3 children: " + fams[1]);

System.out.println("Number of families with 4 children: " + fams[2]);

System.out.println("Number of families with 5 or more children: " + fams[3]);

然后我必须说:

System.out.println("The most common number of children was " + common + ".");

我尝试了代码

int common = 0;
for(int i = 0; i < fams.length; i++) {
    if(common < fams[i]) {
            common = fams[i];

但是,这会输出最常见的fam数(显然是这样)。我需要的是最常见的孩子数量。例如,如果2有5个系列(输入为10),我需要数字2作为输出,而不是5.感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

您需要跟踪fams数组中的最高元素和该元素的索引。索引就是你要找的。

int common = 0;
int commonIndex = -1;
for(int i = 0; i < fams.length; i++) {
    if(common < fams[i]) {
        common = fams[i];
        commonIndex = i;
    }
}

在循环结束时,commonIndex将保留您所需的内容。

答案 1 :(得分:0)

int common = fams[0];
for (int i = 1; i < fams.length; i++) {
    if (common < fams[i]) {
        common = fams[i];
    }
}

答案 2 :(得分:0)

如果您不想保留每个数字的计数(例如,在具有不同值的日志的map-reduce方案中),您可以对集合进行排序,然后线性扫描列表。每次值更改时,您都会重置计数器。如果您的计数器达到最大值,则记住数字和索引。