我正在开发一个 Java 算法类项目,但我遇到了这个我无法解决的问题。
我有一个大小为 [m][n] 的二维数组,其中 m 和 n 可以根据输入而波动。我想根据二维数组中任何垂直列中最低的值将这些值压缩为一维数组。这是数组的两个示例。
示例 1 输入:
3.0, 4.0, 2.0, 3.0, 4.0, 2.0, 1.0, 2.0, 0.0, 3.0, 3.0
0.0, 1.0, 1.0, 2.0, 3.0, 1.0, 2.0, 3.0, 3.0, 2.0, 2.0
示例 1 输出:
0.0, 1.0, 1.0, 2.0, 3.0, 1.0, 1.0, 2.0, 0.0, 2.0, 2.0
示例 2 输入:
0.0, 1.0, 1.0, 2.0, 3.0, 1.0, 2.0, 3.0, 3.0, 2.0, 2.0
2.0, 3.0, 1.0, 0.0, 1.0, 3.0, 2.0, 3.0, 3.0, 4.0, 2.0
1.0, 2.0, 2.0, 3.0, 4.0, 0.0, 1.0, 2.0, 2.0, 1.0, 3.0
1.0, 2.0, 0.0, 1.0, 2.0, 2.0, 1.0, 2.0, 2.0, 3.0, 1.0
2.0, 3.0, 1.0, 2.0, 3.0, 1.0, 0.0, 1.0, 1.0, 2.0, 2.0
示例 2 输出:
0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0
这就是我想要排序的逻辑是这样的:
loop through the 2-d array
at every vertical index, compare all values within the vertical index,
output lowest value to single dimensional array
我相信这是一个有点简单的问题,但我不知道如何正确地做到这一点。感谢您提供的任何建议!
最佳答案
想象一下,对于 input[m][n],m 是您的行,n 是您的列,因此您必须按列遍历才能获得该列中的最低值:
int[] output = new int[n];
for(i = 0; i < n; i++)
output[n] = input[0][n];
for(i = 0; i < n; i++)
for(k = 0; k < m; k++)
if(output[n] > input[m][n])
output[n] = input[m][n];
关于java - 同时比较二维数组的层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40701484/