JavaScript 检查矩阵是否为下三角形
矩阵可以定义为一个二维数组,在其中存储元素,数学上称之为存储数字。下三角矩阵是一个具有相同行和列数的方阵,上主对角线以上的所有元素(从左上角的第一个单元格到右下角的最后一个单元格)都为零。我们将通过解释和讨论时间和空间复杂度来实现一个正确的代码。
示例
Input 1:
mat = [ [ 1, 0, 0, 0],
[ 2, 3, 0, 0],
[4, 5, 6, 0],
[7, 8, 9, 1]
]
Output 1: Yes,
解释:我们可以看到主对角线包含的元素为1, 3, 6和1,而主对角线上方的所有单元格的值都为零。
Input 2:
mat = [ [ 1, 0, 0, 1],
[ 2, 3, 0, 0],
[4, 5, 6, 0],
[7, 8, 9, 1]
]
Output 1: No
解释:我们可以看到主对角线包含元素1、3、6和1,并且主对角线上方的所有单元格都不具有零值。
方法
我们已经看过一个示例,现在让我们来看看实现代码的步骤:
首先,我们将创建一个函数,其中我们将传递给定的矩阵。我们只会遍历矩阵中主对角线的上方部分,即对于每个单元格(i,j),其中j大于i。如果我们发现任何具有非零值的单元格,我们将返回false,否则在最后我们将返回true。
示例
// function to traverse over the matrix
function check(mat){
// getting total number of rows of matrix
var rows = mat.length
// getting columns of the given matrix
var cols = mat[0].length
// traversing over the section present above the main diagonal
for(var i = 0; i < rows; i++){
for(var j = i+1; j < cols; j++){
if(mat[i][j] != 0){
return false;
}
}
}
return true;
}
// defining the matrix
var mat = [ [ 1, 0, 0, 0],
[ 2, 3, 0, 0],
[4, 5, 6, 0],
[7, 8, 9, 1]]
// given matrix
console.log("The given matrix is: ");
console.log(mat)
if(check(mat)){
console.log("The given matrix is a lower triangular matrix");
}
else{
console.log("The given matrix is not a lower triangular matrix");
}
// updating matrix
mat = [ [ 1, 0, 0, 1],
[ 2, 3, 0, 0],
[4, 5, 6, 0],
[7, 8, 9, 1]]
// given matrix
console.log("The given matrix is: ");
console.log(mat)
if(check(mat)){
console.log("The given matrix is a lower triangular matrix");
}
else{
console.log("The given matrix is not a lower triangular matrix");
}
输出
The given matrix is:
[ [ 1, 0, 0, 0 ], [ 2, 3, 0, 0 ], [ 4, 5, 6, 0 ], [ 7, 8, 9, 1 ] ]
The given matrix is a lower triangular matrix
The given matrix is:
[ [ 1, 0, 0, 1 ], [ 2, 3, 0, 0 ], [ 4, 5, 6, 0 ], [ 7, 8, 9, 1 ] ]
The given matrix is not a lower triangular matrix
时间和空间复杂度
上述代码的时间复杂度为O(N*N),其中N是给定矩阵的行数。这是因为我们只遍历了矩阵一次。
上述代码的空间复杂度为O(1),因为我们没有使用任何额外的空间。
结论
在本教程中,我们实现了一个JavaScript程序来判断给定的矩阵是否为下三角矩阵。下三角矩阵是一个方阵,它的行数和列数相同,并且主对角线上方的所有元素都为零。我们实现了一个以O(N*N)时间复杂度和O(1)空间复杂度运行的代码。