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