二维数组主对角线上的最小值

Min value on main diagonal of the 2D Array

我设法创建了一个二维数组并用我的代码自动填充它。我想在主对角线上找到最小值,但我卡住了,不知道如何从我的代码中实现这个想法。谁能解释一下我怎样才能做到这一点?我尝试或想出的一切都没有任何结果..

var matrix = Array.from(Array(10), () => new Array(10));

for(i=0; i<10; i++){
    for(j=0; j<10; j++)
    matrix[i][j] = Math.floor(Math.random() * 100);
    
}


console.log(matrix);

二维方阵(矩阵)的主对角线总是在col_index == row_index,所以你可以遍历数组,通过它找到最小值。

我在我的代码片段中将数组设置为 3x3 以显示更简单的情况,但您也可以将其设置为 10x10 来尝试。

function getMinimumOfDiag(arr) {

 var min = Infinity;
 
 for (var i = 0; i < arr.length; i++)
  if(arr[i].length > i)
    if(arr[i][i] < min)
      min = arr[i][i]

 return min;
};

var matrix = Array.from(Array(3), () => new Array(3));

for(i=0; i<3; i++){
  for(j=0; j<3; j++)
    matrix[i][j] = Math.floor(Math.random() * 100);    
}

console.log(matrix);
console.log(getMinimumOfDiag(matrix));

假设矩阵的行和列长度相同,这应该可行,

var matrix = Array.from(Array(10), () => new Array(10));
const matrixLength = 10;

for(let i=0; i<matrixLength; i++){
    for(j=0; j<matrixLength; j++)
    matrix[i][j] = Math.floor(Math.random() * 100);
    
}
let minValueInDiagonal = Number.MAX_SAFE_INTEGER;
for(let i = 0; i < matrixLength; i++) {
  minValueInDiagonal = Math.min(matrix[i][i], minValueInDiagonal);
}

console.log("Matrix is", matrix);
console.log("Min value in diagonal is: ", minValueInDiagonal); 

构建对角线的一维数组。使用 Math.min 和 .apply 来查找该数组中的最小值。

var matrix = Array.from(Array(10), () => new Array(10));

for(i=0; i<10; i++){
    for(j=0; j<10; j++)
    matrix[i][j] = Math.floor(Math.random() * 100);
    
}
const diag = matrix.map((m, i) => m[i]);
const min = Math.min.apply(null, diag);
console.log(diag, "min = " + min);