gpt4 book ai didi

java - 在可变行长度的java 2D数组中查找列的最大元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:31:16 24 4
gpt4 key购买 nike

我有一个二维数组,其中包含不同长度的行。我想编写一个方法来返回一个由列的最大元素组成的新数组。如果这是一个简单的 n x m 数组,那会很容易,但由于行的长度是可变的,我无法想出一个解决方案来说明列中不同数量的元素。

例如,数组如下所示:

int[][] test = { { 0, 1, 4, 5, 6, 8 }, 
{ 4, 5, 8, 3, 9 },
{ 3, 6, 2 }
};

那么预期的结果将是:

int[] result =  {4, 6, 8, 5, 9, 8};

我有找到行的最大元素的代码,但我不知道如何针对列调整它。

int[] result = new int[m.length];

for (int x = 0; x < m.length; x++) {
result[x] = 0;
for (int y = 0; y < m[x].length; y++) {
if (result[x] < m[x][y]) {
result[x] = m[x][y];
}
}
}

任何帮助将不胜感激

编辑:我现在意识到要做的第一件事是找到元素数量最多的行,因为它定义了新数组的大小。从那里.. 应该取一行的元素并将它们与新数组中相同位置的元素进行比较。对每一行都这样做。那么其他行有多短并不重要。我走的路对吗?

最佳答案

首先你要找出最大行的长度。

然后,类似于您的算法,但您要确保不会出现越界异常。就是这样:

int maxcol = 0;
for(int i = 0; i < test.length; i++)
if(test[i].length > maxcol)
maxcol = test[i].length;


int[] result = new int[maxcol];

for (int j = 0; j < maxcol; j++)
for (int i = 0; i < test.length; i++)
if (test[i].length > j && result[j] < test[i][j])
result[j] = test[i][j];

关于java - 在可变行长度的java 2D数组中查找列的最大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13665461/

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