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)。

更新于:2023年4月13日

82 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告