gpt4 book ai didi

java - 计算数组中某种元素数量的有效方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:15:40 25 4
gpt4 key购买 nike

我得到了一个数组形式的矩阵,如下所示:

[3 2 3]
[4 5 6] => [3 2 3 4 5 6 7 3 9]
[7 3 9]

我还得到了原始矩阵中的行数和列数(这里是 3、3)以及需要计算其出现次数的元素(比如 3)。

现在我想统计这个元素在特定区域出现的次数。

对于 3X3 矩阵,区域定义如下:

[3 2 3]      [3 2 3]
[4 5 6] => [4 5 6]
[7 3 9] [7 N 9]

对于 5X5 矩阵:

[1 2 3 4 5]      [1 2 3 4 5]
[6 7 8 9 0] [6 7 8 9 0]
[1 3 5 7 9] => [1 3 5 7 9]
[2 4 6 8 0] [2 4 N 8 0]
[9 6 3 1 2] [9 N N N 2]

我要计算出现次数的区域是没有填充N的区域。希望模式清晰。

我是这样做的:

int count_elem (int arr[], int rows, int cols, int elem) {
// creating the 2D matrix
int mat[][] = new int[rows][cols];
int arr_in = 0;
for (int i = 0; i<rows; i++) {
for (int j = 0; j<cols; j++) {
mat[i][j] = arr[arr_in];
arr_in++;
}
}

// counting the element
int midCol = cols/2, colLen = rows, count = 0;
for (int j = 0; j<cols; j++) {
for (int i = 0; i<colLen; i++) {
if (mat[i][j] == elem) count++;
}
if (j<midCol) colLen--;
else colLen++;
}

return count;
}

一些约束:

  • 总是方阵
  • 行数或列数总是奇数

我想知道是否有更好的方法来计算给定的元素,一种可能不需要我从数组创建矩阵的方法。

我想知道我的算法是否正确,所以请忽略我代码中的任何错误。

最佳答案

有比从数组创建矩阵更好的解决方案。您可以使用矩阵中的 x 和 y 坐标简单地计算数组索引

x + (y * dimX)

也不需要参数:行数和列数。那是因为你的条件:行=列。您可以从数组长度中获取正方形上的行数和列数。我的解决方案:

static int count_elem(int arr[], int elem) {
int rows = (int) Math.sqrt(arr.length);
int cols = (int) Math.sqrt(arr.length);

int midCol = cols / 2, colLen = rows, count = 0;
for (int j = 0; j < rows; j++) {
for (int i = 0; i < colLen; i++) {
if (arr[j + (i * rows)] == elem) count++;
}
if (j < midCol) colLen--;
else colLen++;
}
return count;
}

希望我的解决方案符合您的想法。

关于java - 计算数组中某种元素数量的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41376852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com