上三角矩陣是一個方陣,具有相同的行數(shù)和列數(shù),并且主對角線下方的所有元素從第一個單元格(位于左上角)到最后一個單元格(位于左上角)右下角)為零。上三角形意味著下三角形中存在的元素將為零。我們將實現(xiàn)一個適當?shù)拇a,并對時間和空間復(fù)雜性進行解釋和討論。
示例
Input1: mat = [ [ 1, 2, 3, 4], [ 0, 5, 6, 7], [ 0, 0, 8, 9], [ 0, 0, 0, 1] ] Output1: Yes,
登錄后復(fù)制
解釋:我們可以看到主對角線包含元素 1、5、8 和 1,并且主對角線下方的所有單元格的值都為零。
Input2: mat = [ [ 1, 2, 3, 4], [ 0, 5, 6, 7], [ 0, 0, 8, 9], [ 0, 1, 0, 1] ] Output1: No
登錄后復(fù)制
解釋:我們可以看到主對角線包含元素 1、5、8 和 1,并且主對角線下方的所有單元格的值都不為零,因為最后一行的第二列包含非零值值。
方法
我們已經(jīng)看到了上面的示例,現(xiàn)在讓我們看看實現(xiàn)代碼的步驟:
首先,我們將創(chuàng)建一個函數(shù),在其中傳遞給定的矩陣。我們將僅遍歷矩陣的主對角線下側(cè)部分,即每個單元格 (i,j),其中 j 小于 i。如果我們發(fā)現(xiàn)任何單元格具有非零值,我們將返回 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"); }
登錄后復(fù)制
輸出
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
登錄后復(fù)制
時間和空間復(fù)雜度
上述代碼的時間復(fù)雜度為O(N*N),其中N是給定矩陣的行數(shù)。這是因為我們只遍歷了矩陣一次。
上述代碼的空間復(fù)雜度為 O(1),因為我們沒有使用任何額外的空間。
結(jié)論
在本教程中,我們實現(xiàn)了一個 JavaScript 程序來檢查給定矩陣是否是上三角矩陣。上三角形意味著下三角形中存在的元素將為零。我們遍歷了矩陣中列數(shù)小于行數(shù)的單元格,時間復(fù)雜度為 O(N*N),空間復(fù)雜度為 O(1)。
以上就是JavaScript 程序檢查矩陣是否為上三角的詳細內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!