我知道有人问过类似的问题,并且我已经进行了研究 许多网站。我尝试使用一些答案,但是我的代码是 仍然无法正常工作。
我正在完成以前的任务,以帮助我积累知识 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;
}
答案 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内的那个索引处增加整数。