[英]How to return a column id that contains minimum value in a 2-D array (Java)
我试图返回包含矩阵中最小值的列的索引,但到目前为止我只能返回矩阵的最小值,并且无法弄清楚如何返回该列的id。 如果我尝试返回“col”,它不会改变任何东西。
public static int minColIndex (int[][] m) {
int row = m.length, col = m[0].length;
int min = m[0][0];
for (col = 0; col < m.length; col++) {
for (row = 0; row < m[col].length; row++) {
if (min > m[col][row]) {
min = m[col][row];
}
}
}
return min;
}
在您的代码中, col
的值在外部循环完成后将始终为m.length - 1
。 您需要将最小列存储在某处,例如,
public static int minColIndex (int[][] m) {
int row = m.length, col = m[0].length;
int min = m[0][0];
int minCol = 0; // extra variable to store minimumm column
for (col = 0; col < m.length; col++) {
for (row = 0; row < m[col].length; row++) {
if (min > m[col][row]) {
min = m[col][row];
minCol = col; // remember the minimum column as well as minimum
}
}
}
return minCol; // return minimum column, not col
}
在循环之前也不需要row
和col
设置初始值,因此您可以将方法的前几行更改为以下内容,以便更加清晰:
public static int minColIndex (int[][] m) {
int min = m[0][0];
int minCol = 0; // extra variable to store minimumm column
for (int col = 0; col < m.length; col++) {
for (int row = 0; row < m[col].length; row++) {
... etc.
public static int minColIndex (int[][] m) {
int row = m.length, col = m[0].length , int index = 0;
int min = m[0][0];
for (col = 0; col < m.length; col++) {
for (row = 0; row < m[col].length; row++) {
if (min > m[col][row]) {
min = m[col][row];
index= col;
}
}
}
return index;
}
定义这些变量。
int rowOfMinValue = 0;
int colOfMinValue = 0;
接着,
更改:
if (min > m[col][row]) {
min = m[col][row];
}
至:
if (min > m[col][row]) {
min = m[col][row];
rowOfMinValue = row;
colOfMinValue = col;
}
现在,你有最小值行和列。
建议 :您错误地将row
和col
指向矩阵。 在mxn
矩阵上, m
和n
分别表示行和列 。 因此,在m[][]
矩阵中, []
每一个分别按顺序表示row
和col
。
如果值6
在2nd row
, 4th col
,那么我们写为
row=1;
col=3;
value = 6;
m[ row ][ col ] = value;
如果(min <m [c] [r]){
MIN = [C] [R];
保存= C;
}'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.