JavaScript 检查矩阵是否为上三角形
上三角形矩阵是一个方阵,其行数和列数相同,并且所有在从第一个单元格(位于左上角)到最后一个单元格(位于右下角)的主对角线下方的元素都为零。上三角指的是下三角中的元素将为零。我们将实现一个适当的代码,并对时间和空间复杂度进行解释和讨论。
示例
Input1:
mat = [ [ 1, 2, 3, 4],
[ 0, 5, 6, 7],
[ 0, 0, 8, 9],
[ 0, 0, 0, 1]
]
Output1: Yes,
解释:我们可以看到主对角线包含元素1、5、8和1,而主对角线下方的所有格子的值都是零。
Input2:
mat = [ [ 1, 2, 3, 4],
[ 0, 5, 6, 7],
[ 0, 0, 8, 9],
[ 0, 1, 0, 1]
]
Output1: No
解释:我们可以看到主对角线包含元素1,5,8和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
// traversing over the section present above the main diagonal
for(var i = 0; i < rows; i++){
for(var j = 0; j < i; j++){
if(mat[i][j] != 0){
return false;
}
}
}
return true;
}
// defining the matrix
var mat = [ [ 1, 2, 3, 4],
[ 0, 5, 6, 7],
[ 0, 0, 8, 9],
[ 0, 0, 0, 1]
]
// given matrix
console.log("The given matrix is: ");
console.log(mat)
if(check(mat)){
console.log("The given matrix is an upper triangular matrix");
}
else{
console.log("The given matrix is not an upper triangular matrix");
}
// updating matrix
mat = [ [ 1, 2, 3, 4],
[ 0, 5, 6, 7],
[ 0, 0, 8, 9],
[ 0, 1, 0, 1]
]
// given matrix
console.log("The given matrix is: ");
console.log(mat)
if(check(mat)){
console.log("The given matrix is an upper triangular matrix");
}
else{
console.log("The given matrix is not an upper triangular matrix");
}
输出
The given matrix is:
[ [ 1, 2, 3, 4 ], [ 0, 5, 6, 7 ], [ 0, 0, 8, 9 ], [ 0, 0, 0, 1 ] ]
The given matrix is an upper triangular matrix
The given matrix is:
[ [ 1, 2, 3, 4 ], [ 0, 5, 6, 7 ], [ 0, 0, 8, 9 ], [ 0, 1, 0, 1 ] ]
The given matrix is not an upper triangular matrix
时间和空间复杂度
以上代码的时间复杂度为O(N*N),其中N是给定矩阵的行数。这是因为我们只遍历了矩阵一次。
以上代码的空间复杂度为O(1),因为我们没有使用额外的空间。
结论
在本教程中,我们实现了一个JavaScript程序来检查给定矩阵是否为上三角矩阵。上三角意味着下三角中的元素将为零。我们遍历了矩阵的单元格,其中列的值小于行号,时间复杂度为O(N*N),空间复杂度为O(1)。