首页 > 解决方案 > 在java中替换二维数组中的数字?

问题描述

我有一个函数可以找到第一个最小值并从二维数组中返回它:

public static int getMinimumValueOfTerrain(int[][] terrain) {
    int min = Integer.MAX_VALUE;
    for (int row = 0; row < terrain.length; row++) {
        for (int col = 0; col < terrain[row].length; col++) {
            min = Math.min(min, terrain[row][col]);
        }
    }
    return min;
}

我有另一个函数应该用它的负值替换找到的最小值:

public static int[][] replaceMinusValue(int[][] terrain) {
    for (int row = 0; row < terrain.length; row++) {
        for (int col = 0; col < terrain[row].length; col++) {
            int tempValue = getMinimumValueOfTerrain(terrain);
            int minusValue = -tempValue;
        }
    }
    return terrain;
}

例子:

2 1 3
3 2 1
4 2 5

预期结果:

2 -1 3
3 2 1
4 2 5

我怎样才能用我的功能来处理它?

标签: javaarraysmatrixmultidimensional-array

解决方案


您有多种选择。如果你只这样做一次或者效率无关紧要,你可以遍历整个数组并找到最小的元素,然后替换该元素。例如:

public static void replaceMinusValue(int[][] terrain) {
    int min = Integer.MAX_VALUE;
    int minI = -1;
    int minJ = -1;
    for (int i = 0; i < terrain.length; i++) {
        for (int j = 0; j < terrain[i].length; j++) {
            if (terrain[i][j] < min) {
                min = terrain[i][j];
                minI = i;
                minJ = j;
            }
        }
    }

    terrain[minI][minJ] *= -1;
}

会那样做。请注意,您不需要在翻转后返回地形(就像您在排序时不返回新数组一样)。


推荐阅读