java - 计算二维 int 数组的最小值的程序
问题描述
我正在尝试创建一个程序,它计算二维数组中每个维度的最小值。所以对于前。如果我有一个数组:
int[][] test = {{1,2,3},{2,3,4},{4,5,6}}
程序将显示: [1,2,4] - 每个维度的最小值。为此,我创建了一个名为 minimum 的方法,如下所示
static int[] minimum(int[][] arr) {
int[] result = new int [arr.length];
for (int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
int min = arr[i][0];
if(arr[i][j] < min) {
min = arr [i][j];
result [i] = min;
} else{
}
}
}
return result;
}
但是当我在我的 main 中调用这个方法时,使用一个示例数组
public static void main(String[] args) {
int[][] arr = {{1,2,3,},{3,4,5},{6,6,6}};
System.out.println(Arrays.toString(minimum(arr)));
}
程序显示 [0,0,0,]。您是否知道问题出在哪里以及如何解决?
解决方案
问题是如果数组中的第一个元素是 min,它永远不会被记录到结果数组中。尝试:
static int[] minimum(int[][] arr) {
int[] result = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
result[i] = arr[i][0];
for (int j = 1; j < arr[i].length; j++) {
if (arr[i][j] < result[i]) {
result[i] = arr[i][j];
}
}
}
return result;
}
请注意,上述函数的输入矩阵中每行至少需要一个元素;如果您愿意,可以添加条件或用于Integer.MIN_VALUE
处理空行。
推荐阅读
- android - MaterialCardView 包括所有孩子到位图
- java - 将对象添加到 ArrayList
- sql - 使用 TypeORM 在 Postgres 中回滚数据库更改
- java - 以 HTML 格式下载 Zip 文件
- angular - ionic 4/5 使用 ngx-translate 自动添加到 i18n 中的字幕文件
- python - 将数据附加到熊猫数据框
- altair - altair 无法使用 vconcat 分面图
- android - 无法手动激活 CALL_PHONE 权限(如果用户选择“不再显示此内容”)
- android - android gridlayout行和列与结果不匹配
- c++ - 是否有类似 std::any_of 的东西会将谓词应用于所有元素