在Java中计算数组中的重复次数

时间:2018-11-19 14:23:41

标签: java arrays loops count

  

我知道有人问过类似的问题,并且我已经进行了研究   许多网站。我尝试使用一些答案,但是我的代码是   仍然无法正常工作。

     

我正在完成以前的任务,以帮助我积累知识   Java。请原谅我的代码中的任何错误,我仍在学习   Java。

     

这是我的问题:

执行一个方法计数,给定一个整数元素数组,该方法计数返回另一个数组,该数组包含输入数组中每个整数{0,...,r}的出现次数,其中r是一个整数,表示高位您需要计算的整数的边界。

返回的计数数组的大小将为r + 1,其中每个索引i处的元素对应于出现整数i的次数(其中i在{0,...,r}中)。

输入数组中从0到r的整数范围之外的元素都可以忽略。

例如,假设输入[0、8、1、3、1、3、10、3]且r为4,则输出应为[1、2、0、3、0]。

如果输入数组为null或长度为0,则将返回null。

空间要求:方法计数应仅对count数组使用额外的空间。

时间要求:计数应通过输入数组一次计算。

  

这是我到目前为止所做的事情,它不符合要求,因此我需要帮助才能找到正确的解决方案:

public static int[] count(int[] arr, int r) {
        int[] count = new int[r + 1];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < r; j++) {
                if (arr[i] == j) {
                    count[i]++;

                }

            }
        }
        return count;
    }

1 个答案:

答案 0 :(得分:2)

您真的很亲密,但似乎有些错误。

int[] count = new int[r + 1];
for (int i = 0; i < arr.length; i++) {
    if( arr[i] <= r) {
        count[arr[i]]++;
    }
}

我认为上面的方法会起作用,如果您考虑一下,只要该索引在{0 ... r}之内,则arr的每个元素都对应于一个计数索引,因此我们检查该值是否在范围,然后我们在count内的那个索引处增加整数。