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