查找2D数组中每列的最大值

时间:2018-05-30 16:04:33

标签: java arrays

我在使用java时感到疑惑。

有二维数组,如下所示。

int[][] test = {{3, 9, 3, 5}, {4, 19, 4, 9}, {2, 10, 5, 6}};

我想在二维数组中找到每一行的最大值,我想知道如何编码它。

我想结果是

int[] answer = {4, 19, 5, 9}

只需添加评论,我想提取最大值。

[0][0] = 3;
[1][0] = 4;
[2][0] = 2;

[0][1] = 9;
[1][1] = 19;
[2][1] = 10;

[0][2] = 3;
[1][2] = 4;
[2][2] = 5;

[0][3] = 5;
[1][3] = 9;
[2][3] = 6;


So max value is 4, 19, 5, 9

我试过这个方法,但是这个方法是arr [i] [j]比较二维数组中的所有元素,并且在比较中只找到最大值。

for (int i = 0; i < test.length; i++) {
    int max = test[i][0];
    for (int j = 0; j < test[i].length; j++)      
        if (test[i][j] > max)
            max = test[i][j]
    }

2 个答案:

答案 0 :(得分:3)

您可以使用第一行初始化结果,然后迭代此矩阵,如果当前元素test[row][column]大于result[column],则重新分配result[column]

public static void main(String[] args) {
    int[][] test = {{3, 9, 3, 5}, {4, 19, 4, 9}, {2, 10, 5, 6}};
    int[] result = test[0];
    for (int row = 1; row < test.length; row++) {
        for (int column = 0; column < test[0].length; column++) {
            if (test[row][column] > result[column]) {
                result[column] = test[row][column];
            }
        }
    }
    for (int number : result) {
        System.out.print(number + " "); // 4 19 5 9 
    }
}

答案 1 :(得分:1)

根据你的例子,&#34;大&#34;循环正在通过列和&#34;小&#34;循环线。你会有类似的东西:

True

然后你需要一个数组的结果变量:for(int j=0; j<test[0].length; j++) { //loop through columns for(int i=0; i<test.length; i++) { //loop through lines } }

然后你需要一个变量来存储列的最大数量。这个变量将在每个&#34;大&#34;重新初始化。循环,因为你想重新确定最大值

int[] result = new int[test[0].length];

然后对每一行检查数字是否大于最大值。如果用新值替换max。

int[] result = new int[test[0].length]; //Array to store the result
for(int j=0; j<test[0].length; j++) { //loop through columns
    int max = 0; //int to store the max of the i column
    for(int i=0; i<test.length; i++) { //loop through lines
    }
}

最后,当您浏览列的每一行时,将找到的最大值添加到结果中

if(test[i][j] > max) { //if the number at the column i and line j is bigger than max
    max = test[i][j]; then max becomes this number
}

这应该给你这个:

result[i] = max; //Add the found max to the result array