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

2024-04-28

我有一个二维数组,其中有不同长度的行。我想编写一个返回一个新数组的方法,该数组由列的最大元素组成。如果这是一个简单的 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];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找可变行长度的java 2D数组中列的最大元素 的相关文章

随机推荐