在java中替换2D数组中的数字?
我有一个函数,它可以找到第一个最小值并从2d数组返回:
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;
}
例如:
^{tb1}$
预期成果:
^{tb2}$
我如何使用我的函数来处理它
# 1 楼答案
您还应该将
min
的行和列索引保留在getMinimumValueOfTerrain
中。在for
循环之后,您可以将terrain[minRow][minColumn]
更改为负值。我认为如果没有约束,只有getMinimumValueOfTerrain
方法就足够了。如果有,您可以编写另一个返回索引的2元素数组的函数# 2 楼答案
更快的实现是检测最小值的行和列坐标并修改该值:
如果必须在
getMinimumValueOfTerrain
中重用现有方法getMinimumValueOfTerrain
,则应再次找到min
元素,并可应用嵌套循环中的break
:# 3 楼答案
你有多种选择。如果只执行一次,或者效率无关紧要,则可以在整个数组中循环,找到最小的元素,然后替换该元素。例如:
我会那样做的。请注意,翻转后不需要返回地形(就像排序时不返回新数组一样)